Building management system with integration of data into smart entities

ABSTRACT

A building management system includes an entity database, a software defined gateway, and an entity service. The entity database stores a plurality of interconnected smart entities including object entities representing a plurality of physical devices, people, or spaces and data entities representing data associated with the plurality of physical devices, people, or spaces. The smart entities are interconnected by relational objects indicating relationships between the object entities and the data entities. The software defined gateway is configured to receive information technology (IT) data and operational technology (OT) data from a plurality of different data sources. The entity service is configured to create a new smart entity in the entity database or update an existing smart entity in the entity database using the IT data and the OT data. The new or existing smart entity includes one or more first attributes having values derived from the IT data and one or more second attributes having values derived from the OT data.

CROSS-REFERENCE TO RELATED PATENT APPLICATIONS

This application is continuation of U.S. patent application Ser. No.17/211,425 filed Mar. 24, 2021 which is a continuation of U.S. patentapplication Ser. No. 16/142,720 filed Sep. 26, 2018 (now U.S. Pat. No.10,962,945) which claims the benefit of and priority to U.S. ProvisionalPatent Application No. 62/564,247 filed Sep. 27, 2017, U.S. ProvisionalPatent Application No. 62/611,974 filed Dec. 29, 2017, U.S. ProvisionalPatent Application No. 62/611,984 filed Dec. 29, 2017, and U.S.Provisional Patent Application No. 62/612,193 filed Dec. 29, 2017. Theentire disclosure of each of these patent applications is incorporatedby reference herein.

BACKGROUND

The present disclosure relates generally to a building management systemand more particularly to a building management system configured toingest, process, and store data from a variety of different datasources. A building management system (BMS) is, in general, a system ofdevices configured to control, monitor, and manage equipment in oraround a building or building area. A BMS can include, for example, aHVAC system, a security system, a lighting system, a fire alertingsystem, any other system that is capable of managing building functionsor devices, or any combination thereof.

A BMS can collect data from sensors and other types of buildingequipment. BMSs typically rely on hardware gateway devices to collectand pre-process data before the data is provided to the BMS. Differentgateways use different data ingestion techniques and software that oftendo not communicate using the same protocols or data models. Accordingly,maintenance and integration cost can be high when multiple gateways mustwork together to collect and provide data to a building managementsystem. It would be desirable to provide a solution that overcomes theseand other problems associated with traditional gateway devices.

SUMMARY

One implementation of the present disclosure is a building managementsystem including an entity database, a software defined gateway, and anentity service. The entity database stores a plurality of interconnectedsmart entities. The smart entities include object entities representinga plurality of devices of building equipment, people within a building,or spaces within the building. The smart entities include data entitiesrepresenting data associated with the plurality of devices of buildingequipment, people within the building, or spaces within the building.The smart entities are interconnected by relational objects indicatingrelationships between the object entities and the data entities. Thesoftware defined gateway is configured to receive information technology(IT) data and operational technology (OT) data from a plurality ofdifferent data sources. The IT data describe one or more characteristicsof the plurality of devices of building equipment, people within thebuilding, or spaces within the building, the characteristics beingstatic or changing at a first rate;. The OT data describe one or morestates or conditions of plurality of devices of building equipment,people within the building, or spaces within the building, the states orconditions being dynamic or changing at a second rate faster than thefirst rate. The entity service is configured to create a new smartentity in the entity database or update an existing smart entity in theentity database using the IT data and the OT data. The new or existingsmart entity includes one or more static attributes having valuesderived from the IT data and one or more dynamic attributes havingvalues derived from the OT data.

In some embodiments, the software defined gateway is configured to use adifferent communications protocol to communicate with each of theplurality of different data sources, the communication protocolscomprising at least one of BACnet, Modbus, LonTalk, SQL, JMS, AMQP,MQTT, FTP, or HTTP.

In some embodiments, the plurality of data sources include at least twoof internet of things (IoT) devices, building equipment, a weatherservice, a news service, a document service, or a media service.

In some embodiments, the smart entity is a virtual representation of aphysical system or building equipment device, person or group of peoplewithin the building, or space or group of spaces within the building.

In some embodiments, the entity service is configured to transform theone or more static characteristics of the building equipment device,person within the building, or space within the building into the one ormore static attributes of the smart entity.

In some embodiments, the IT data describe at least one of a relationshipbetween the building equipment device and other building equipmentdevices or a relationship between the building equipment device and thespace within the building.

In some embodiments, the entity service is configured to transform theone or more dynamic states or conditions of the building equipmentdevice, person within the building, or space within the building intothe one or more dynamic attributes of the smart entity.

In some embodiments, the OT data comprise event data received inreal-time from building equipment installed within a building. In someembodiments, the building equipment includes a chiller, a boiler, asensor, a cooling tower, and air handling unit, a rooftop unit, avariable air volume unit. lighting equipment, security equipment, orfire detection equipment.

In some embodiments, the OT data include data samples collected frombuilding equipment comprising at least one of sensors, actuators,electronics, vehicles, or home appliances.

In some embodiments, the OT data include data samples collected frombuilding equipment devices comprising at least one of smart home hubdevices, smart house devices, doorbell cameras, air quality sensors,smart thermostats, smart switches, smart lights, smart appliances,garage door openers, smart building equipment, or smoke detectors.

In some embodiments, wherein the OT data include data samples collectedfrom internet of things (IoT) devices comprising at least one of heartmonitoring implants, biochip transponders, cameras streaming live feeds,automobiles with built-in sensors, DNA analysis devices, field operationdevices, or tracking devices for people/vehicles/equipment.

In some embodiments, the OT data include data samples collected frombuilding equipment devices comprising at least one of networked sensors,wireless sensors, wearable sensors, environmental sensors, RFID gatewaysand readers, IoT gateway devices, robots and other robotic devices, GPSdevices, smart watches, or virtual/augmented reality devices.

In some embodiments, the OT data include samples of data points receivedin real-time from building equipment.

In some embodiments, the entity service is configured to create andmanage a plurality of smart entities including one or more objectentities representing a plurality of physical building equipmentdevices, one or more data entities representing data generated by thephysical building equipment devices, and one or more relational objectsindicating relationships interconnecting the object entities and thedata entities.

In some embodiments, a first smart entity of the plurality ofinterconnected smart entities includes a first attribute identifying aphysical building equipment device represented by the smart entity and asecond attribute storing a most recent value of a dynamic variableassociated with the physical building equipment device.

In some embodiments, the entity service is configured to create andmanage the plurality of interconnected smart entities. The objectentities may include a first object entity representing a physicalbuilding equipment device. The data entities may include a timeseriesrepresenting data generated by the physical building equipment device.The timeseries includes a first attribute identifying the object entityand a second attribute storing a most recent value of a dynamic variableassociated with the physical building equipment device.

In some embodiments, the entity service is configured to create andmanage a plurality of smart entities including an object entityrepresenting a physical building equipment device, a data entityrepresenting data generated by the physical building equipment device,and a relational object comprising a first attribute identifying theobject entity and a second attribute identifying the data entity.

Another implementation of the present disclosure is a buildingmanagement system for managing data relating to a plurality of physicalbuilding equipment devices connected to one or more electroniccommunications networks. The building management system includes one ormore computer-readable storage media having instructions stored thereon.When executed by one or more processors, the instructions cause the oneor more processors to store a plurality of interconnected smart entitiesin an entity base. The smart entities include object entitiesrepresenting a plurality of devices of building equipment, people withina building, or spaces within the building. The smart entities includedata entities representing data associated with the plurality of devicesof building equipment, people within the building, or spaces within thebuilding. The smart entities are interconnected by relational objectsindicating relationships between the object entities and the dataentities. The instructions cause the one or more processors to receiveinformation technology (IT) data and operational technology (OT) datafrom a plurality of different data sources. The IT data describe one ormore characteristics of the plurality of devices of building equipment,people within the building, or spaces within the building, thecharacteristics being static or changing at a first rate. The OT datadescribe one or more states or conditions of the plurality of devices ofbuilding equipment, people within the building, or spaces within thebuilding, the states or conditions being dynamic or changing at a secondrate faster than the first rate. The instructions cause the one or moreprocessors to create a new smart entity in the entity database or updatean existing smart entity in the entity database using the IT data andthe OT data, the new or existing smart entity including one or morefirst attributes having values derived from the IT data and one or moresecond attributes having values derived from the OT data.

In some embodiments, the instructions cause the one or more processorsto use a different communications protocol to communicate with each ofthe plurality of different data sources, the communication protocolscomprising at least one of BACnet, Modbus, LonTalk, SQL, JMS, AMQP,MQTT, FTP, or HTTP.

In some embodiments, the plurality of data sources include at least twoof internet of things (IoT) devices, building equipment, a weatherservice, a news service, a document service, or a media service.

In some embodiments, the smart entity is a virtual representation of aphysical system or device of building equipment, person within thebuilding or group of people, or space or group of spaces within thebuilding.

In some embodiments, the instructions cause the one or more processorsto transform the one or more static characteristics of the buildingequipment device, person within the building, or space within thebuilding into the one or more static attributes of the smart entity.

In some embodiments, the IT data describe at least one of a relationshipbetween the building equipment device and other building equipmentdevices or a relationship between the building equipment device and thespace within the building.

In some embodiments, the instructions cause the one or more processorsto transform the one or more dynamic states or conditions of thebuilding equipment device, person within the building, or space withinthe building into the one or more dynamic attributes of the smartentity.

In some embodiments, the OT data include event data received inreal-time from building equipment installed within a building. In someembodiments, the building equipment includes a chiller, a boiler, asensor, a cooling tower, and air handling unit, a rooftop unit, avariable air volume unit, lighting equipment, security equipment, orfire detection equipment.

In some embodiments, the OT data include data samples collected frominternet of things (IoT) devices comprising at least one of physicaldevices of building equipment, sensors, actuators, electronics,vehicles, or home appliances.

In some embodiments, the OT data include data samples collected frombuilding equipment devices comprising at least one of smart home hubdevices, smart house devices, doorbell cameras, air quality sensors,smart thermostats, smart switches, smart lights, smart appliances,garage door openers, smart building equipment, or smoke detectors.

In some embodiments, the OT data include data samples collected frominternet of things (IoT) devices comprising at least one of heartmonitoring implants, biochip transponders, cameras streaming live feeds,automobiles with built-in sensors, DNA analysis devices, field operationdevices, or tracking devices for people/vehicles/equipment.

In some embodiments, the OT data include data samples collected frombuilding equipment devices comprising at least one of networked sensors,wireless sensors, wearable sensors, environmental sensors, RFID gatewaysand readers, IoT gateway devices, robots and other robotic devices, GPSdevices, smart watches, or virtual/augmented reality devices.

In some embodiments, the OT data include samples of data points receivedin real-time from building equipment devices.

In some embodiments, the instructions cause the one or more processorsto create and manage a plurality of smart entities including one or moreobject entities representing a plurality of physical building equipmentdevices, one or more data entities representing data generated by thephysical building equipment devices, and one or more relational objectsindicating relationships interconnecting the object entities and thedata entities.

In some embodiments, a first smart entity of the plurality ofinterconnected smart entities comprises a first attribute identifying aphysical building equipment device represented by the first smart entityand a second attribute storing a most recent value of a dynamic variableassociated with the physical building equipment device.

In some embodiments, the instructions cause the one or more processorsto create and manage the plurality of interconnected smart entities. Theobject entities may include a first object entity representing aphysical building equipment device. The data entities may include atimeseries representing data generated by the physical buildingequipment device. The timeseries includes a first attribute identifyingthe first object entity and a second attribute storing a most recentvalue of a dynamic variable associated with the physical buildingequipment device.

In some embodiments, the instructions cause the one or more processorsto create and manage a plurality of smart entities including an objectentity representing a physical building equipment device, a data entityrepresenting data generated by the physical building equipment device,and a relational object comprising a first attribute identifying theobject entity and a second attribute identifying the data entity.

Another implementation of the present disclosure is a method formanaging data relating to a plurality of physical building equipmentdevices connected to one or more electronic communications networks. Themethod includes storing a plurality of interconnected smart entities inan entity base. The smart entities include object entities representinga plurality of devices of building equipment, people within a building,or spaces within the building. The smart entities include data entitiesrepresenting data associated with the plurality of devices of buildingequipment, people within the building, or spaces within the building.The smart entities are interconnected by relational objects indicatingrelationships between the object entities and the data entities. Themethod includes receiving information technology (IT) data andoperational technology (OT) data from a plurality of different datasources. The IT data describe one or more characteristics of theplurality of devices of building equipment, people within the building,or spaces within the building, the characteristics being static orchanging at a first rate. The OT data describe one or more states orconditions of the plurality of devices of building equipment, peoplewithin the building, or spaces within the building, the states orconditions being dynamic or changing at a second rate faster than thefirst rate. The method includes creating a new smart entity in theentity database or updating an existing smart entity in the entitydatabase using the IT data and the OT data. The new or existing smartentity includes one or more first attributes having values derived fromthe IT data and one or more second attributes having values derived fromthe OT data.

In some embodiments, the method includes using a differentcommunications protocol to communicate with each of the plurality ofdifferent data sources, the communication protocols comprising at leastone of BACnet, Modbus, LonTalk, SQL, JMS, AMQP, MQTT, FTP, or HTTP.

In some embodiments, the plurality of data sources include at least twoof internet of things (IoT) devices, building equipment, a weatherservice, a news service, a document service, or a media service.

In some embodiments, the smart entity is a virtual representation of aphysical system or device of building equipment, person or group ofpeople within the building, or space or group of spaces within thebuilding.

In some embodiments, the method includes transforming the one or morestatic characteristics of the device, person within the building, orspace within the building into the one or more static attributes of thesmart entity.

In some embodiments, the IT data describe at least one of a relationshipbetween the building equipment device and other building equipmentdevices or a relationship between the building equipment device and thespace within the building.

In some embodiments, the method includes transforming the one or moredynamic states or conditions of the building equipment device, personwithin the building, or space within the building into the one or moredynamic attributes of the smart entity.

In some embodiments, the OT data include event data received inreal-time from building equipment installed within a building. In someembodiments, the building equipment includes a chiller, a boiler, asensor, a cooling tower, and air handling unit, a rooftop unit, avariable air volume unit, lighting equipment, security equipment, orfire detection equipment.

In some embodiments, the OT data include data samples collected frominternet of things (IoT) devices comprising at least one of physicaldevices of building equipment, sensors, actuators, electronics,vehicles, or home appliances.

In some embodiments, the OT data include data samples collected frombuilding equipment devices comprising at least one of smart home hubdevices, smart house devices, doorbell cameras, air quality sensors,smart thermostats, smart switches, smart lights, smart appliances,garage door openers, smart building equipment, or smoke detectors.

In some embodiments, the OT data include data samples collected frominternet of things (IoT) devices comprising at least one of heartmonitoring implants, biochip transponders, cameras streaming live feeds,automobiles with built-in sensors, DNA analysis devices, field operationdevices, or tracking devices for people/vehicles/equipment.

In some embodiments, the OT data include data samples collected frombuilding equipment devices comprising at least one of networked sensors,wireless sensors, wearable sensors, environmental sensors, RFID gatewaysand readers, IoT gateway devices, robots and other robotic devices, GPSdevices, smart watches, or virtual/augmented reality devices.

In some embodiments, the OT data include samples of data points receivedin real-time from building equipment devices.

In some embodiments, the method includes creating and managing aplurality of smart entities including one or more object entitiesrepresenting a plurality of physical building equipment devices, one ormore data entities representing data generated by the physical buildingequipment devices, and one or more relational objects indicatingrelationships interconnecting the object entities and the data entities.

In some embodiments, the smart entity comprises a static attributeidentifying a physical building equipment device represented by thesmart entity and a dynamic attribute storing a most recent value of adynamic variable associated with the physical building equipment device.

In some embodiments, the method includes creating and managing aplurality of smart entities including an object entity representing aphysical building equipment device and a data entity representing datagenerated by the physical building equipment device. The data entityincludes a static attribute identifying the object entity and a dynamicattribute storing a most recent value of a dynamic variable associatedwith the physical building equipment device.

In some embodiments, the method includes creating and managing aplurality of smart entities including an object entity representing aphysical building equipment device, a data entity representing datagenerated by the physical building equipment device, and a relationalobject comprising a first attribute identifying the object entity and asecond attribute identifying the data entity.

Another implementation of the present disclosure is one or morenon-transitory computer readable media containing program instructions.When executed by one or more processors, the instructions cause the oneor more processors to perform operations including receiving informationtechnology (IT) data and operational technology (OT) data from aplurality of different data sources. The IT data describe one or morestatic characteristics of a building equipment device, person within abuilding, or space within the building. The OT data describe one or moredynamic states or conditions of a building equipment device, personwithin the building, or space within the building. The instructionscause the one or more processors to create a smart entity including oneor more static attributes having values derived from the IT data and oneor more dynamic attributes having values derived from the OT data.

In some embodiments, the instructions cause the one or more processorsto use a different communications protocol to communicate with each ofthe plurality of different data sources, the communication protocolscomprising at least one of BACnet, Modbus, or LonTalk.

In some embodiments, the plurality of data sources include at least twoof internet of things (IoT) devices, building equipment, a weatherservice, a news service, a document service, or a media service.

In some embodiments, the smart entity is a virtual representation of aphysical system or device of building equipment, person or group ofpeople within the building, or space or group of spaces within thebuilding.

In some embodiments, the instructions cause the one or more processorsto transform the one or more static characteristics of the buildingequipment device, person within the building, or space within thebuilding into the one or more static attributes of the smart entity.

In some embodiments, the IT data describe at least one of a relationshipbetween the building equipment device and other building equipmentdevices or a relationship between the building equipment device and thespace within the building.

In some embodiments, the instructions cause the one or more processorsto transform the one or more dynamic states or conditions of thebuilding equipment device, person within the building, or space withinthe building into the one or more dynamic attributes of the smartentity.

In some embodiments, the OT data include event data received inreal-time from HVAC equipment installed within a building. In someembodiments, the HVAC equipment includes a chiller, a boiler, a sensor,a cooling tower, and air handling unit, a rooftop unit, or a variableair volume unit.

In some embodiments, the OT data include data samples collected frominternet of things (IoT) devices comprising at least one of physicaldevices of building equipment, sensors, actuators, electronics,vehicles, or home appliances.

In some embodiments, the OT data include data samples collected frombuilding equipment devices comprising at least one of smart home hubdevices, smart house devices, doorbell cameras, air quality sensors,smart thermostats, smart switches, smart lights, smart appliances,garage door openers, smart building equipment, or smoke detectors.

In some embodiments, the OT data include data samples collected frominternet of things (IoT) devices comprising at least one of heartmonitoring implants, biochip transponders, cameras streaming live feeds,automobiles with built-in sensors, DNA analysis devices, field operationdevices, or tracking devices for people/vehicles/equipment.

In some embodiments, the OT data include data samples collected frombuilding equipment devices comprising at least one of networked sensors,wireless sensors, wearable sensors, environmental sensors, RFID gatewaysand readers, IoT gateway devices, robots and other robotic devices, GPSdevices, smart watches, or virtual/augmented reality devices.

In some embodiments, the OT data include samples of data points receivedin real-time from building equipment devices.

In some embodiments, the instructions cause the one or more processorsto create and manage a plurality of smart entities including one or moreobject entities representing a plurality of physical building equipmentdevices, one or more data entities representing data generated by thephysical building equipment devices, and one or more relational objectsindicating relationships interconnecting the object entities and thedata entities.

In some embodiments, the smart entity comprises a static attributeidentifying a physical building equipment device represented by thesmart entity and a dynamic attribute storing a most recent value of adynamic variable associated with the physical building equipment device.

In some embodiments, the instructions cause the one or more processorsto create and manage a plurality of smart entities including an objectentity representing a physical building equipment device and a dataentity representing data generated by the physical building equipmentdevice. The data entity includes a static attribute identifying theobject entity and a dynamic attribute storing a most recent value of adynamic variable associated with the physical building equipment device.

In some embodiments, the instructions cause the one or more processorsto create and manage a plurality of smart entities including an objectentity representing a physical building equipment device, a data entityrepresenting data generated by the physical building equipment device,and a relational object comprising a first attribute identifying theobject entity and a second attribute identifying the data entity.

Those skilled in the art will appreciate that the summary isillustrative only and is not intended to be in any way limiting. Otheraspects, inventive features, and advantages of the devices and/orprocesses described herein, as defined solely by the claims, will becomeapparent in the detailed description set forth herein and taken inconjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a data ingestion system including abuilding management system, according to some embodiments.

FIG. 2 is a block diagram illustrating the building management system ofFIG. 1 in greater detail including a software defined gateway, platformservices, and application, according to some embodiments.

FIG. 3 is a block diagram illustrating a data platform that receivesdata from the software defined gateway of FIG. 2 , according to someembodiments.

FIG. 4 is a block diagram illustrating the software defined gateway ofFIG. 2 in greater detail, according to some embodiments.

FIG. 5 is another block diagram illustrating the software definedgateway of FIG. 2 in greater detail, according to some embodiments.

FIG. 6 is an image of a user interface which can be generated by thesoftware defined gateway of FIG. 2 , according to some embodiments.

FIG. 7 is a block diagram illustrating several gateway deploymenttopologies, according to some embodiments.

FIG. 8A is a block diagram illustrating a remote initiated gatewayupdate process, according to some embodiments.

FIG. 8B is a block diagram illustrating a remote initiated gatewayupdate process, according to some embodiments.

FIG. 9 is a block diagram illustrating another gateway update process,according to some embodiments.

FIG. 10 is a block diagram of a system for integrating smart entitieswith enterprise applications, according to some embodiments.

FIG. 11 is a block diagram illustrating an entity service of FIG. 2 ingreater detail, according to some embodiments.

FIG. 12 in an example entity graph of entity data, according to someembodiments.

FIG. 13 is a flow diagram of a process or method for updating/creatingan attribute of a related entity based on data received from a device,according to some embodiments.

FIG. 14 is an example entity graph of entity data, according to someembodiments.

FIG. 15 is a flow diagram of a process or method for analyzing data froma second related device based on data from a first device, according tosome embodiments.

DETAILED DESCRIPTION

Referring generally to the FIGURES, a building management system andcomponents thereof are shown, according to some embodiments. Thebuilding management system includes a software defined gateway andseveral platform services (e.g., a timeseries service, an entityservice, a security service, an analytics service, etc.). The softwaredefined gateway is configured to translate between a protocol or formatused by the platform services and a variety of other protocols orformats used by external systems or devices that communicate with thebuilding management system. This allows the building management systemto ingest and process inbound data from a variety of different datasources and provide data to a variety of different external systems ordevices.

The entity service is configured to create and manage smart entities.The smart entities include attributes that describe a correspondingsystem, device, person, relationship, or other items represented by thesmart entities. In some embodiments, the attributes include both staticand dynamic attributes. The entity service can use informationtechnology (IT) data received from external systems or devices togenerate values for the static attributes of the smart entities.Similarly, the entity service can use operational technology (OT) datareceived from external systems or devices to generate values for thedynamic attributes of the smart entities. These and other features ofthe building management system are described in greater detail below.

Data Ingestion System

Referring now to FIG. 1 , a block diagram of a data ingestion system 100is shown, according to an exemplary embodiment. Data ingestion system100 is shown to include a building management system 102. Buildingmanagement system 102 can be configured to collect data from a varietyof different data sources. For example, building management system 102is shown collecting data from several buildings including a school 120,hospital 130, factory 140, and office 150. Although only a few examplesof buildings are shown in FIG. 1 , it should be understood that buildingmanagement system 102 can collect data from any type of buildingincluding, for example, educational buildings (e.g., schools,universities, libraries, etc.), health care buildings (e.g., hospitals,outpatient facilities, clinics, etc.), industrial facilities (e.g.,factories, manufacturing facilities, warehouses, etc.), commercialfacilities (e.g., retail stores, grocery stores, distribution centers,etc.), offices, transportation facilities (e.g. airports, trainstations, car rental facilities, etc.), residential buildings (e.g.,apartment buildings, homes, hotels, etc.), government buildings, or anyother type of building.

Building management system 102 can collect data from a variety ofdevices 112-116, 122-126, 132-136, and 142-146. In some embodiments,devices 112-116, 122-126, 132-136, and 142-146 are located withinbuildings 120, 130, 140, and 150. For example, devices 112-116, 122-126,132-136, and 142-146 can include smart home hub devices, smart housedevices, doorbell cameras, air quality sensors, smart thermostats, smartswitches, smart lights, smart appliances, garage door openers, smartbuilding equipment, smoke detectors, or other types of building devices.In some embodiments, devices 112-116, 122-126, 132-136, and 142-146 areinternet of things (IoT) devices. For example, devices 112-116, 122-126,132-136, and 142-146 may include physical devices, sensors, actuators,electronics, vehicles, home appliances, and/or other items havingnetwork connectivity which enable IoT devices 203 to communicate withbuilding management system 102. Several examples of IoT devices whichcan provide data to building management system 102 are described indetail with reference to FIG. 1 . While the devices described herein aregenerally referred to as IoT devices, it should be understood that, invarious embodiments, the devices references in the present disclosurecould be any type of devices capable to communication of data over anelectronic network.

Building management system 102 can collect data from a variety ofexternal systems or services. For example, building management system102 is shown receiving weather data from a weather service 152, newsdata from a news service 154, documents and other document-related datafrom a document service 156, and media (e.g., video, images, audio,social media, etc.) from a media service 158. In some embodiments,building management system 102 generates data internally. For example,building management system 102 may include a web advertising system, awebsite traffic monitoring system, a web sales system, or other types ofplatform services that generate data. The data generated by buildingmanagement system 102 can be collected, stored, and processed along withthe data received from other data sources. Building management system102 can collect data directly from external systems or devices or via anetwork 104 (e.g., a WAN, the Internet, a cellular network, etc.).Building management system 102 can process and transform collected datato generate timeseries data and entity data. In some embodiments,building management system 102 includes some or all of the features ofthe data platform described in U.S. Provisional Patent Application No.62/564,247 filed Sep. 27, 2017, the entire disclosure of which isincorporated by reference herein. Several features of buildingmanagement system 102 are described in detail below.

Building Management System

Referring now to FIG. 2 , a block diagram illustrating buildingmanagement system 102 in greater detail is shown, according to someembodiments. Building management system 102 can be configured to collectdata from a variety of different data sources. For example, buildingmanagement system 102 is shown collecting data from building systems202, interne of things (IoT) devices 203, weather service 152, newsservice 154, document service 156, and media service 158. In someembodiments, building management system 102 separates datacollection/ingestion; data storage, retrieval, and analysis; and datavisualization into three different layers. This allows buildingmanagement system to support a variety of applications 230 that use thedata and allows new applications 230 to reuse the existinginfrastructure provided by platform services 220.

Building systems 202 can include any type of system configured tomanage, monitor, control, or operate a building or a portion thereof.For example, building systems 202 may include a fire safety system, alift/escalator system, an electrical system, an information andcommunications technology (ICT) system, a security system, a HVACsystem, a refrigeration system, a lighting system, an advertising orsignage system a home control system, and/or other types of buildingcontrol systems. Building systems 202 can also include any type ofsystem configured to manage information associated with occupants of abuilding and/or the activities thereof. For example, building systems202 can include a human resources (HR) system, an accounting system, apayroll system, a building information system, a customer relationshipmanagement (CRM) system, a marketing system, an enterprise resourceplanning system, or any other type of system that can be used byoccupants of a building. In some embodiments, building systems 202 caninclude any of the building subsystems, building equipment, or othertypes of building devices. Several examples of such devices aredescribed in detail in U.S. patent application Ser. No. 15/644,560 filedJul. 7, 2017, the entire disclosure of which is incorporated byreference herein.

IoT devices 203 may include any of a variety of physical devices,sensors, actuators, electronics, vehicles, home appliances, and/or otheritems having network connectivity which enable IoT devices 203 tocommunicate with building management system 102. For example, IoTdevices 203 can include smart home hub devices, smart house devices,doorbell cameras, air quality sensors, smart thermostats, smartswitches, smart lights, smart appliances, garage door openers, smartbuilding equipment, smoke detectors, heart monitoring implants, biochiptransponders, cameras streaming live feeds, automobiles with built-insensors, DNA analysis devices, field operation devices, tracking devicesfor people/vehicles/equipment, networked sensors, wireless sensors,wearable sensors, environmental sensors, RFID gateways and readers, IoTgateway devices, robots and other robotic devices, GPS devices, smartwatches, virtual/augmented reality devices, and/or other networked ornetworkable devices. In some embodiments, IoT devices 203 include someor all of devices 112-116, 122-126, 132-136, and 142-146, as describedwith reference to FIG. 1 .

Weather service 152, news service 154, document service 156, and mediaservice 158 may be the same as previously described. For example,weather service 152 can be configured to provide weather data tobuilding management system 102. News service 154 can be configured toprovide news data to building management system 102. Document service156 can be configured to provide documents and other document-relateddata to building management system 102. Media service 158 can beconfigured to provide media (e.g., video, images, audio, social media,etc.) to building management system 102. In some embodiments, mediaservice 158 includes an internet-based advertising system or clicktracking system. For example, media service 158 can provide event datato building management system 102 in response to a web server deliveringa webpage, advertisement, or receiving a click from a user. Buildingmanagement system 102 can be configured to ingest, process, store,and/or publish data from these and any of a variety of other datasources.

Building management system 102 is shown receiving two main types ofdata: information technology (IT) data and operational technology (OT)data. IT data may include any type of data related to informationtechnology in or around a building. In some embodiments, informationtechnology includes the use of computers to store, retrieve, transmit,and manipulate data or information in the context of a business or otherenterprise. Information technology can be considered a subset ofinformation and communications technology (ICT) and may encompass otherinformation distribution technologies such as television and telephones.Information technology may include computer hardware, software,electronics, semiconductors, internet, telecom equipment, ande-commerce.

IT data may include data that describes various entities (e.g., people,spaces, devices, etc.) and the relationships therebetween. For example,IT data may include an entity graph that describes the relationshipsbetween spaces, equipment, and other entities (e.g., chiller A provideschilled fluid to air handling unit B, air handling unit B providesairflow to room C, temperature sensor D located in room C, person E partof employee team F, floor G contains room C, etc.). Alternatively, theentity graph can be inferred from the IT data or constructed from the ITdata. IT data may include human resources data that describes a set ofemployees and includes details about the employees (e.g., name, employeeID, job title/role, responsibilities, payroll information, address,etc.). IT data may include building information data that describes abuilding, building spaces, or building equipment. For example, IT datamay include a building information model (BIM), building spaceinformation (e.g., a space hierarchy, space relationships, spaceattributes, etc.), IoT device information (e.g., device locations,descriptions, device relationships, etc.), and/or other information thatprovides context for the data received by building management system 102or describes the entities managed by building management system 102. Insome embodiments, IT data is preexisting/static and can be provided tobuilding management system 102 as a batch. However, it is contemplatedthat IT data can be updated after it has been created if changes occurto the entities or relationships described by the IT data.

As used herein, the term “static” refers to data, characteristics,attributes, or other information that does not change over time orchange infrequently. For example, a device name or address may bereferred to as a static characteristic of the device because it does notchange frequently. However, should be understood that “static” items arenot limited to permanently fixed information. Some types of static itemsmay change occasionally or infrequently. For example, a device addressmay be a type of static attribute that can be changed if desired but isnot expected to change frequently. Static data is contrasted withdynamic data that is expected to change relatively frequently.

OT data may include any type of data related to operational technologyin or around a building. Operational technology may include, forexample, hardware and/or software dedicated to detecting or causingchanges in physical processes through direct monitoring and/or controlof physical devices such as valves, pumps, etc. Operational technologymay include the use of computers to monitor or alter the physical stateof a system, such as the control system for a building or the controlnetwork for the building. Examples of operational technology includeprogrammable logic controllers (PLCs), supervisory control and dataacquisition (SCADA) systems, distributed control systems, computernumerical control (CNC) systems including computerized machine tools,and scientific equipment.

OT data may include data that is generated and/or updated in real-timeas a result of operating the systems and devices that provide data tobuilding management system 102. For example, OT data may includetimeseries data received from IoT devices 203 (e.g., sensormeasurements, status indications, alerts, notifications, etc.), weatherinformation received from weather service 152, a news feed received fromnews service 154, document updates received from document service 156,media updates received from media service 158, and/or other types oftelemetry data. In general, OT data can be described as real-timeoperational data or streaming data whereas IT data can be described asinstitutional or contextual data that is not continuously updated. Forexample, the OT data associated with a particular sensor may includemeasurements from the sensor, whereas the IT data associated with thesensor may include the sensor name, sensor type, and sensor location. OTdata may change relatively frequently (e.g., each time a new measurementis recorded by a sensor) whereas IT data may remain static or changerelatively less frequently (e.g., when the sensor is renamed or moved toa new location).

Building management system 102 can process and transform/translate theOT data and IT data using platform services 220 to generate timeseriesdata and entity data. Throughout this disclosure, the term “rawtimeseries data” is used to describe the raw data samples of OT datareceived by building management system 102. The term “derived timeseriesdata” is used to describe the result or output of a transformation orother timeseries processing operation performed by platform services 220(e.g., data aggregation, data cleansing, virtual point calculation,etc.). The raw timeseries data and derived timeseries data can beprovided to various applications 230 and/or stored in timeseries storage214 (e.g., as materialized views of the raw timeseries data). The term“entity data” is used to describe the attributes of various entities(e.g., people, spaces, things, etc.) and relationships between entities.The entity data can be created by platform services 220 as a result ofprocessing the IT data and/or OT data received by building managementsystem 102 and can be stored in entity storage 216.

Before discussing building management system 102 in greater detail, itshould be noted that the components of building management system 102can be integrated within a single device (e.g., a web server, asupervisory controller, a building controller, etc.) or distributedacross multiple separate systems or devices. For example, the componentsof building management system 102 can be implemented as part of a cloudcomputing platform configured to receive and process data from multiplebuildings and IoT devices. In other embodiments, the components ofbuilding management system 102 can be implemented as part of a buildingautomation system installed within a building or as part of a suite ofcloud-hosted services. In other embodiments, some or all of thecomponents of building management system 102 can be components of asubsystem level controller (e.g., a HVAC controller), a subplantcontroller, a device controller (e.g., an AHU controller, a chillercontroller, etc.), a field controller, a computer workstation, a clientdevice, or any other system or device that receives and processes datafrom building equipment.

Still referring to FIG. 2 , building management system 102 is shown toinclude a communications interface 204. Communications interface 204 caninclude wired or wireless communications interfaces (e.g., jacks,antennas, transmitters, receivers, transceivers, wire terminals, etc.)for conducting data communications with building systems 202, IoTdevices 203, weather service 152, news service 154, document service156, media service 158, or other external systems or devices.Communications conducted via communications interface 204 can be direct(e.g., local wired or wireless communications) or via a communicationsnetwork 104 (e.g., a WAN, the Internet, a cellular network, etc.).

Communications interface 204 can facilitate communications betweenbuilding management system 102 and external applications (e.g., remotesystems and applications) for allowing user control, monitoring, andadjustment to building management system 102 and/or the devices thatcommunicate with building management system 102. Communicationsinterface 204 can also facilitate communications between buildingmanagement system 102 and client devices (e.g., computer workstations,laptop computers, tablets, mobile devices, etc.). Building managementsystem 102 can be configured to communicate with external systems anddevices using any of a variety of communications protocols (e.g.,HTTP(S), WebSocket, CoAP, MQTT, etc.) building automation systemsprotocols (e.g., BACnet, Modbus, LonWork, C-Bus, KNZ, DALI, ADX, etc.),industrial control protocols (e.g., MTConnect, OPC, OPC-UA, etc.),process automation protocols (e.g., HART, Profibus, etc.), homeautomation protocols, or any of a variety of other protocols.Advantageously, building management system 102 can receive, ingest, andprocess data from any type of system or device regardless of thecommunications protocol used by the system or device.

Building management system 102 is shown to include a processing circuit206 including a processor 208 and memory 210. Processor 208 can be ageneral purpose or specific purpose processor, an application specificintegrated circuit (ASIC), one or more field programmable gate arrays(FPGAs), a group of processing components, or other suitable processingcomponents. Processor 208 is configured to execute computer code orinstructions stored in memory 210 or received from other computerreadable media (e.g., CDROM, network storage, a remote server, etc.).

Memory 210 can include one or more devices (e.g., memory units, memorydevices, storage devices, etc.) for storing data and/or computer codefor completing and/or facilitating the various processes described inthe present disclosure. Memory 210 can include random access memory(RAM), read-only memory (ROM), hard drive storage, temporary storage,non-volatile memory, flash memory, optical memory, or any other suitablememory for storing software objects and/or computer instructions. Memory210 can include database components, object code components, scriptcomponents, or any other type of information structure for supportingthe various activities and information structures described in thepresent disclosure. Memory 210 can be communicably connected toprocessor 208 via processing circuit 206 and can include computer codefor executing (e.g., by processor 208) one or more processes describedherein. When processor 208 executes instructions stored in memory 210,processor 208 generally configures processing circuit 206 to completesuch activities.

In some embodiments, building management system 102 includes a pluralityof processors, memories, interfaces, and other components distributedacross multiple devices or systems. For example, in a cloud-based ordistributed implementation, building management system 102 may includemultiple discrete computing devices, each of which includes a processor208, memory 210, communications interface 204, software defined gateway212, and/or other components of building management system 102. Tasksperformed by building management system 102 can be distributed acrossmultiple systems or devices, which may be located within the building orfacility or distributed across multiple buildings or facilities. In someembodiments, multiple software defined gateways 212 are implementedusing different processors, computing devices, servers, and/or othercomponents and carry out portions of the features described herein.

Still referring to FIG. 2 , building management system 102 is shown toinclude a software defined gateway 212. Software defined gateway 212 maybe implemented as a component of a software defined networking (SDN)network. SDN is a network architecture that is dynamic, manageable,cost-effective, and adaptable, making it suitable for high-bandwidth anddynamic applications. SDN architectures decouple network control andforwarding functions, enabling network control to become directlyprogrammable and the underlying infrastructure to be abstracted fromapplications and network services. In some instances, SDN technologyfacilitates network management and enables programmatically efficientnetwork configuration in order to improve network performance andmonitoring. SDN architectures provide a more flexible approach tonetworking in contrast to the static architecture of traditionalnetworks. For example, traditional networks can be decentralized andcomplex while current networks require more flexibility and easytroubleshooting. SDN suggests to centralize network intelligence in onenetwork component by disassociating the forwarding process of networkpackets (i.e., the data plane) from the routing process (i.e., controlplane). The control plane may include one or more controllers which areconsidered as the brain of SDN network where the whole intelligence isincorporated. As a component of SDN, software defined gateway 212 may beflexible enough to be dynamically updated by SDN so that itsconfiguration can be rewritten as needed by pushing a new configurationto software defined gateway 212.

Software defined gateway 212 can receive the IT data and OT data viacommunications interface 204 and can provide translated IT data and OTdata to platform services 220, timeseries storage 214, and/or entitystorage 216. For example, software defined gateway 212 can be configuredto translate the incoming IT data and OT data from a protocol or formatused by the data sources into a protocol or format used by platformservices 220. In some embodiments, the OT data include timestamps anddata values for various data points. The data values can be measured orcalculated values, depending on the type of data point. For example, adata point received from a temperature sensor can include a measureddata value indicating a temperature measured by the temperature sensor.A data point received from a chiller controller can include a calculateddata value indicating a calculated efficiency of the chiller. Softwaredefined gateway 212 can receive data samples from multiple differentdevices.

The data samples can include one or more attributes that describe orcharacterize the corresponding data points. For example, the datasamples can include a name attribute defining a point name or ID (e.g.,“B1F4R2.T-Z”), a device attribute indicating a type of device from whichthe data samples is received (e.g., temperature sensor, humidity sensor,chiller, etc.), a unit attribute defining a unit of measure associatedwith the data value (e.g., ° F., ° C., kPA, etc.), and/or any otherattribute that describes the corresponding data point or providescontextual information regarding the data point. The types of attributesincluded in each data point can depend on the communications protocolused to send the data samples to building management system 102. Forexample, data samples received via the ADX protocol or BACnet protocolcan include a variety of descriptive attributes along with the datavalue, whereas data samples received via the Modbus protocol may includea lesser number of attributes (e.g., only the data value without anycorresponding attributes).

In some embodiments, each data sample is received with a timestampindicating a time at which the corresponding data value was measured orcalculated. In other embodiments, software defined gateway 212 addstimestamps to the data samples based on the times at which the datasamples are received. Software defined gateway 212 can generate rawtimeseries data for each of the data points for which data samples arereceived. Each timeseries can include a series of data values for thesame data point and a timestamp for each of the data values. Forexample, a timeseries for a data point provided by a temperature sensorcan include a series of temperature values measured by the temperaturesensor and the corresponding times at which the temperature values weremeasured. An example of a timeseries which can be generated by softwaredefined gateway 212 is as follows:

[<key, timestamp₁, value₁>, <key, timestamp₂, value₂>, <key, timestamp₃,value₃]

where key is an identifier of the source of the raw data samples (e.g.,timeseries ID, sensor ID, etc.), timestamp_(i) identifies the time atwhich the ith sample was collected, and value_(i) indicates the value ofthe ith sample.

Software defined gateway 212 can add timestamps to the data samples ormodify existing timestamps such that each data sample includes a localtimestamp. Each local timestamp indicates the local time at which thecorresponding data sample was measured or collected and can include anoffset relative to universal time. The local timestamp indicates thelocal time at the location the data point was measured at the time ofmeasurement. The offset indicates the difference between the local timeand a universal time (e.g., the time at the international date line).For example, a data sample collected in a time zone that is six hoursbehind universal time can include a local timestamp (e.g.,Timestamp=2016-03-18T14: 10: 02) and an offset indicating that the localtimestamp is six hours behind universal time (e.g., Offset=−6:00). Theoffset can be adjusted (e.g., +1:00 or −1:00) depending on whether thetime zone is in daylight savings time when the data sample is measuredor collected.

The combination of the local timestamp and the offset provides a uniquetimestamp across daylight saving time boundaries. This allows anapplication using the timeseries data to display the timeseries data inlocal time without first converting from universal time. The combinationof the local timestamp and the offset also provides enough informationto convert the local timestamp to universal time without needing to lookup a schedule of when daylight savings time occurs. For example, theoffset can be subtracted from the local timestamp to generate auniversal time value that corresponds to the local timestamp withoutreferencing an external database and without requiring any otherinformation.

In some embodiments, software defined gateway 212 organizes the rawtimeseries data. Software defined gateway 212 can identify a system ordevice associated with each of the data points. For example, softwaredefined gateway 212 can associate a data point with a temperaturesensor, an air handler, a chiller, or any other type of system ordevice. In various embodiments, data collector uses the name of the datapoint, a range of values of the data point, statistical characteristicsof the data point, or other attributes of the data point to identify aparticular system or device associated with the data point. Softwaredefined gateway 212 can then determine how that system or device relatesto the other systems or devices in the building site. For example,software defined gateway 212 can determine that the identified system ordevice is part of a larger system (e.g., a HVAC system) or serves aparticular space (e.g., a particular building, a room or zone of thebuilding, etc.). In some embodiments, software defined gateway 212 usesor creates an entity graph when organizing the timeseries data. Anexample of such an entity graph is described in greater detail withreference to FIGS. 12 and 14 and in U.S. patent application Ser. No.15/644,560 filed July 7, 2017, the entire disclosure of which isincorporated by reference herein.

In some embodiments, software defined gateway 212 uses the IT data andOT data to update the attributes of various entities. As describedabove, an entity is a virtual representation (e.g., a data object) of aperson, space, system, device, or thing that provides data to buildingmanagement system 102. For example, a conference room entity may be avirtual representation of a physical conference room space within abuilding. The conference room entity may include a variety of attributesthat describe the conference room. For example, the conference room mayinclude a “location” attribute that describes where the conference roomis located, a “contains” attribute that identifies one or more systemsor devices of equipment contained within the conference room, a“contained within” attribute that identifies a floor or building thatcontains the conference room, a “temperature” attribute that indicatesthe current air temperature of the conference room, an “occupancy”attribute that indicates whether the conference room is occupied orunoccupied, or any of a variety of other attributes. Software definedgateway 212 can use the OT data to update the values of the attributesof various entities each time a new data sample or event is received.Similarly, software defined gateway 212 can use the IT data to updatethe values of the attributes of various entities when the relationshipsbetween entities or other attributes indicated by the IT data changes.In other embodiments, entity attributes are updated by entity service226 of platform services 220.

Software defined gateway 212 can provide the timeseries data and entitydata to platform services 220 and/or store the timeseries data andentity data in timeseries storage 214 and entity storage 216,respectively. In some embodiments, timeseries storage 214 and entitystorage 216 can be data storage internal to building management system102 (e.g., within memory 210) or other on-site data storage local to thebuilding site or other location at which the IT data and OT data arecollected. In other embodiments, timeseries storage 214 and entitystorage 216 can include a remote database, cloud-based data hosting, orother remote data storage. For example, timeseries storage 214 andentity storage 216 can include remote data storage located off-siterelative to the building site or other location at which the IT data andOT data are collected. Timeseries storage 214 can be configured to storethe raw timeseries data obtained by software defined gateway 212, thederived timeseries data generated by platform services 220, and/ordirected acyclic graphs (DAGs) used by platform services 220 to processthe timeseries data. Similarly, entity storage 216 can be configured tostore the IT data and OT data collected by software defined gateway 212and/or the entity data generated by platform services 220.

Still referring to FIG. 2 , BMS 102 is shown to include platformservices 220. Platform services 220 can receive the translated IT dataand OT data from software defined gateway 212 and/or retrieve thetimeseries data and entity data from timeseries storage 214 and entitystorage 216. Platform services 220 can include a variety of servicesconfigured to analyze, process, and transform the IT data and OT data tocreate timeseries data and entity data. For example, platform services220 are shown to include a security service 222, an analytics service224, an entity service 226, and a timeseries service 228. Securityservice 222 can assign security attributes to the IT data and OT data toensure that the IT data and OT data are only accessible to authorizedindividuals, systems, or applications.

Analytics service 224 can use the translated IT data and OT data asinputs to various analytics (e.g., fault detection, energy consumption,web traffic, revenue, etc.) to derive an analytic result from the ITdata and OT data. Analytics service 224 can apply a set of faultdetection rules to the IT data and OT data to determine whether a faultis detected at each interval of a timeseries. Fault detections can bestored as derived timeseries data. For example, analytics service 224can generate a new fault detection timeseries with data values thatindicate whether a fault was detected at each interval of thetimeseries. An example of such a fault detection timeseries is describedin greater detail in U.S. patent application Ser. No. 15/644,560. Thefault detection timeseries can be stored as derived timeseries dataalong with the raw timeseries data in timeseries storage 214.

Entity service 226 can use the translated IT data and OT data providedby software defined gateway 212 to create or update the attributes ofvarious entities managed by building management system 102. Some entityattributes may be the most recent value of a data point provided tobuilding management system 102 as OT data. For example, the“temperature” attribute of a conference room entity may be the mostrecent value of a temperature data point provided by a temperaturesensor located in the conference room. Entity service 226 can use the ITdata to identify the temperature sensor located in the conference roomand can use the OT data associated with the identified temperaturesensor to update the “temperature” attribute each time a new sample ofthe temperature data point is received. As another example, a “mostrecent view” attribute of a webpage entity may indicate the most recenttime at which the webpage was viewed. Entity service 226 can use the OTdata from a click tracking system or web server to determine when themost recent view occurred and can update the “most recent view”attribute accordingly.

Other entity attributes may be the result of an analytic,transformation, calculation, or other processing operation based on theOT data and IT data. For example, entity service 226 can use the IT datato identify an access control device (e.g., a card reader, a keypad,etc.) at the entrance/exit of a building space. Entity service 226 canuse OT data received from the identified access control device to trackthe number of occupants entering and exiting the building space. Entityservice 226 can update a “number of occupants” attribute of an entityrepresenting the building space each time a person enters or exits thebuilding space such that the “number of occupants” attribute reflectsthe current number of occupants within the space. As another example, a“total revenue” attribute associated with a product line entity may bethe summation of all the revenue generated from sales of thecorresponding product. Entity service 226 can use the OT data receivedfrom a sales tracking system (e.g., a point of sale system, anaccounting database, etc.) to determine when a sale of the productoccurs and identify the amount of revenue generated by the sale. Entityservice 226 can then update the “total revenue” attribute by adding themost recent sales revenue to the previous value of the attribute.

In some embodiments, entity service 226 uses IT data and/or OT data frommultiple different data sources to update the attributes of variousentities. For example, an entity representing a person may include a“risk” attribute that quantifies the person's level of risk attributableto various physical, environmental, or other conditions. Entity service226 can use OT data from a card reader or IT data from a human resourcessystem to determine the physical location of the person at any giventime. Entity service 226 can use weather data from weather service 152to determine whether any severe weather is approaching the person'slocation. Similarly, entity service 226 can use emergency data from newsservice 154 or media service 158 to determine whether the person'slocation is experiencing any emergency conditions (e.g., active shooter,police response, fire response, etc.). Entity service 226 can usebuilding data from building systems 202 to determine whether thebuilding in which the person is located is experiencing any emergencyconditions (e.g., fire, building lockdown, etc.) or environmentalhazards (e.g., detected air contaminants, pollutants, extremetemperatures, etc.) that could increase the person's level of risk.Entity service 226 can use these and other types of data as inputs to arisk function that calculates the value of the person's “risk” attributeand can update the person entity accordingly.

Still referring to FIG. 2 , timeseries service 228 can apply varioustransformations, operations, or other functions to the raw timeseriesdata provided by software defined gateway 212 to generate derivedtimeseries data. In some embodiments, timeseries service 228 aggregatespredefined intervals of the raw timeseries data (e.g., quarter-hourlyintervals, hourly intervals, daily intervals, monthly intervals, etc.)to generate new derived timeseries of the aggregated values. Thesederived timeseries can be referred to as “data rollups” since they arecondensed versions of the raw timeseries data. The data rollupsgenerated by timeseries service 228 provide an efficient mechanism forapplications 230 to query the timeseries data. For example, applications230 can construct visualizations of the timeseries data (e.g., charts,graphs, etc.) using the pre-aggregated data rollups instead of the rawtimeseries data. This allows applications 230 to simply retrieve andpresent the pre-aggregated data rollups without requiring applications230 to perform an aggregation in response to the query. Since the datarollups are pre-aggregated, applications 230 can present the datarollups quickly and efficiently without requiring additional processingat query time to generate aggregated timeseries values.

In some embodiments, timeseries service 228 calculates virtual pointsbased on the raw timeseries data and/or the derived timeseries data.Virtual points can be calculated by applying any of a variety ofmathematical operations (e.g., addition, subtraction, multiplication,division, etc.) or functions (e.g., average value, maximum value,minimum value, thermodynamic functions, linear functions, nonlinearfunctions, etc.) to the actual data points represented by the timeseriesdata. For example, timeseries service 228 can calculate a virtual datapoint (pointID₃) by adding two or more actual data points (pointID₁ andpoinID₂) (e.g., pointID₃=pointID₁+pointID₂). As another example,timeseries service 228 can calculate an enthalpy data point (pointID₄)based on a measured temperature data point (pointID₂) and a measuredpressure data point (pointID₆) (e.g., pointID₄=enthalpy(pointI D₂,pointID₆)). The virtual data points can be stored as derived timeseriesdata.

Applications 230 can access and use the virtual data points in the samemanner as the actual data points. Applications 230 do not need to knowwhether a data point is an actual data point or a virtual data pointsince both types of data points can be stored as derived timeseries dataand can be handled in the same manner by applications 230. In someembodiments, the derived timeseries are stored with attributesdesignating each data point as either a virtual data point or an actualdata point. Such attributes allow applications 230 to identify whether agiven timeseries represents a virtual data point or an actual datapoint, even though both types of data points can be handled in the samemanner by applications 230. These and other features of timeseriesservice 228 are described in greater detail in U.S. Patent applicationSer. No. 15/644,560 filed Jul. 7, 2017, the entire disclosure of whichis incorporated by reference herein.

Still referring to FIG. 2 , building management system 102 is shown toinclude several applications 230 including an energy managementapplication 232, monitoring and reporting applications 234, andenterprise control applications 236. Although only a few applications230 are shown, it is contemplated that applications 230 can include anyof a variety of applications configured to use the derived timeseriesgenerated by platform services 220. In some embodiments, applications230 exist as a separate layer of building management system 102 (i.e.,separate from platform services 220 and software defined gateway 212).This allows applications 230 to be isolated from the details of how theIT data and OT data are collected and how the timeseries data and entitydata are generated. In other embodiments, applications 230 can exist asremote applications that run on remote systems or devices (e.g., remotesystems and applications, client devices, etc.).

Applications 230 can use the derived timeseries data to perform avariety data visualization, monitoring, and/or control activities. Forexample, energy management application 232 and monitoring and reportingapplication 234 can use the derived timeseries data to generate userinterfaces (e.g., charts, graphs, etc.) that present the derivedtimeseries data to a user. In some embodiments, the user interfacespresent the raw timeseries data and the derived data rollups in a singlechart or graph. For example, a dropdown selector can be provided toallow a user to select the raw timeseries data or any of the datarollups for a given data point. Several examples of user interfaces thatcan be generated based on the derived timeseries data are described inU.S. patent application Ser. No. 15/182,579 filed Jun. 14, 2016, andU.S. Provisional Patent Application No. 62/446,284 filed Jan. 13, 2017.The entire disclosures of both these patent applications areincorporated by reference herein.

Enterprise control application 236 can use the derived timeseries datato perform various control activities. For example, enterprise controlapplication 236 can use the derived timeseries data as input to acontrol algorithm (e.g., a state-based algorithm, an extremum seekingcontrol (ESC) algorithm, a proportional-integral (PI) control algorithm,a proportional-integral-derivative (PID) control algorithm, a modelpredictive control (MPC) algorithm, a feedback control algorithm, a deeplearning or reinforcement learning algorithm, an artificial intelligence(AI) based control algorithm, etc.) to generate control signals forbuilding systems 202. In some embodiments, building systems 202 use thecontrol signals to operate building equipment. Operating the buildingequipment can affect the measured or calculated values of the datasamples provided to building management system 102. Accordingly,enterprise control application 236 can use the derived timeseries dataas feedback to control the systems and devices of building systems 202.

Software Defined Gateway

Referring now to FIGS. 3-5 , block diagrams illustrating softwaredefined gateway 212 in greater detail and a data platform 300 thatreceives data from software defined gateway 212 are shown, according toan exemplary embodiment. Unlike a traditional hardware gateway, softwaredefined gateway 212 may be implemented entirely as software components.Software defined gateway 212 may be responsible for collecting data fromsensors, building equipment, IoT devices, and other external systems anddevices, as previously described. Software defined gateway 212 can storethe collected data until the data can be processed by platform services220 and sent to applications 230 via a target data transmissionprotocol.

In some embodiments, software defined gateway 212 includes softwareintelligent data transmission algorithms to decide if the data at agiven stage of processing should be temporary, persistent, or keptin-memory. Intelligent data transmission can be used for optimizing datatransmission cost when cellular network services are used. In someembodiments, software defined gateway 212 is fault tolerant and hasdisaster recovery. For example, software defined gateway 212 can beconfigured to compensate for a power outage or network connection lossthat may result in an interruption of gateway processing. Softwaredefined gateway 212 can be bootstrapped and started automatically assoon as power returns or network connection restores to the device, andcan resume work from the point at which it was interrupted. Softwaredefined gateway 212 can be configured to handle system logging and canbalance the number of log entries stored on by software defined gateway212 with the number of log entries sent for external storage.

Referring specifically to FIG. 3 , data platform 300 is shown. Dataplatform 300 can be configured to receive data from software definedgateway 212 and is shown to include a device manager 302. Device manager302 can be configured to identify smart connected devices that send datato building management system 102. In some embodiments, device manager302 identifies smart connected devices via a token sent by the smartconnected devices and/or via any other login credential. For example,the token may be an encrypted key that device manager 302 can decrypt.Based on the identity of a device of the smart connected devices, devicemanager 302 may allow the device to retrieve data and/or software storedby building management system 102. Device manager 302 can be furtherconfigured to generate control signals for smart connected devicesand/or otherwise control the functionality of smart connected devices.In some embodiments, device manager 302 is configured to performmanifest updating and/or software updating. For example, device manager302 can be configured to store a manifest for smart connected devicesand/or store software files. In this regard, device manager 302 canstore and/or retrieve data (e.g., a manifest) and can update themanifest and/or software.

In some embodiments, device manager 302 manages virtual representationsof various devices that communicate with building management system 102.The virtual representations may be a type of smart entity (e.g.,“digital twins” or “shadows”) that represent physical devices and can bestored in entity storage 330. The smart entities may track variousinformation regarding the physical devices that they represent. In someembodiments, device manager 302 is configured to update the smartentities when new IT data or OT data that affects the smart entities arereceived. For example, the smart entities may include a “Chiller A”entity that represents a physical chiller and a “Conference Room D”entity that represents a space within a building. In response toincoming IT data that indicates Chiller A serves Conference Room D,device manager 302 may update the Chiller A entity to include a “serves”relationship that identifies Conference Room D. Similarly, in responseto receiving a new sample of OT data from Chiller A (e.g., a newmeasurement of chilled water temperature), device manager 302 may updatean “Average Chilled Water Temperature” attribute of the Chiller A entityto reflect a new average that includes the most recent sample of OTdata. Several examples of these and other functions which can beperformed by device manager 302 are described in detail in U.S. patentapplication Ser. No. 15/494,403 filed Apr. 21, 2017, and U.S. patentapplication Ser. No. 15/639,880 filed Jun. 30, 2017, both of which areincorporated by reference herein in their entireties.

Still referring to FIG. 3 , data platform 300 is shown to include areal-time ingestion service 304 and a message queue 306. Real-timeingestion service 304 can be configured to receive and handle HTTP(S)posts and other types of real-time data, whereas message queue 306 canbe configured to receive and handle messages received via a queuingprotocol. In some embodiments, the data received via real-time ingestionservice 304 and message queue 306 includes timeseries data and othertypes of OT data collected by software defined gateway 212 in real-time.For example, real-time ingestion service 304 can be configured toreceive and handle measurements obtained from sensors or other types ofbuilding equipment in real-time. Message queue 306 can be configured toreceive and handle messages generated by building equipment and/or by auser device. Adaptors 308 and 310 can translate the data received viareal-time ingestion service 304 and message queue 306 and store the dataas timeseries 314. In some embodiments, IT and OT streaming dataprocessing service 312 interacts with timeseries 314 to process the ITdata, OT data, and/or other types of data used to generate timeseries314.

Data platform 300 is shown to include an entity and object ingestionservice 320. Entity and object ingestion service 320 can be configuredto receive and handle incoming IT data. For example, entity and objectingestion service 320 can be configured to receive PDF data, image data(e.g., JPG, PNG, BMP, etc.), video data, word data, entity information,and/or other types of IT data, as previously described. Entity andobject ingestion service 320 can provide the IT data to IT and OTstreaming data processing service 312 for further processing and/or tostorage abstraction service 316. Storage abstraction service 316 can beconfigured to store the processed IT and OT data using database service318. Storage abstraction service 316 can also create and store an indexof the processed IT and OT data in content index 326.

Search index updater 322 can use the index information stored in contentindex 326 to update a search index for the IT and OT data. Entityrelationship updater 324 can be configured to determine whether the ITdata defines new entity relationships by comparing the IT data withentity graph 328. If new entity relationships are detected, entityrelationship updater 324 can update the entity relationships in entitygraph 328. Entity relationship updater 324 can also store updated entityinformation in entity storage 330. Data service API 332 can beconfigured to interface with content index 326, entity graph 328, andentity storage 330 to allow the indexed content, entity graph, andentities to be viewed, queried, retrieved, or otherwise presented to auser 334 or other external system, device, or service. Data service API332 can also interface with entity and object ingestion service 320 toaccess timeseries data and eventseries data. Several examples of suchtimeseries and eventseries data are described in detail in U.S. patentapplication Ser. No. 15/644,560 filed Jul. 7, 2017, the entiredisclosure of which is incorporated by reference herein.

Referring now to FIG. 4 , software defined gateway 212 is shown toinclude northbound protocol adaptors 336, southbound protocol adaptors342, core services 338, and API services 340. Southbound protocoladaptors 342 may be responsible for the discovery of connectedsub-systems including sensors and actuators and for collecting data.Southbound protocol adaptors 342 can be configured to communicate andtranslate data using building automation systems protocols (e.g.,BACnet, Modbus, LonWork, C-Bus, KNZ, DALI, ADX, etc.), industrialcontrol protocols (e.g., MTConnect, OPC, OPC-UA, etc.), processautomation protocols (e.g., HART, Profibus, etc.), home automationprotocols, or any of a variety of other protocols.

In some embodiments, southbound protocol adaptors 342 are configured tocommunicate and translate data received by software defined gateway 212in the BACnet communications protocol. BACnet is a communicationsprotocol for building automation and control networks and may be used bya variety of building equipment and other devices in building managementsystem 102. The BACnet protocol defines a variety of different standardobject types as well as standard attributes of the defined object types.

The BACnet southbound protocol adaptor can be configured to identify theobject type specified by a BACnet data message and extract attributesfrom the BACnet data message. The BACnet southbound protocol adaptor cantranslate the extracted attributes from the BACnet protocol into acommon format used to store the data values in building managementsystem 102. Similarly, the BACnet southbound protocol adaptor cantranslate stored data within building management system 102 into aBACnet data message and can send the BACnet data message to a connectedBACnet device.

In some embodiments, southbound protocol adaptors 342 are configured tocommunicate and translate data received by software defined gateway 212in the Modbus communications protocol. Modbus is a serial communicationsprotocol that is often used by building equipment and other industrialelectronic devices. Modbus enables communication among many devicesconnected to the same network. For example, building management system102 may include sensors that measure temperature and humidity andcommunicate the measurements to a controller or other supervisorydevice. Modbus can be used to connect a supervisory computer orcontroller with a remote terminal unit (RTU) in building managementsystem 102 and other types of supervisory control systems.

In some embodiments, each device intended to communicate using Modbus isgiven a unique address. In some Modbus networks, only the node assignedas the Master may initiate a command. On Ethernet, any device can sendout a Modbus command, although usually only one master device does so. AModbus command can contain the Modbus address of the device for whichthe command is intended (e.g., address 1 to 247). Only the intendeddevice will act on the command, even though other devices might receiveit. Modbus commands can instruct a device to change the value in one ofits registers, control or read an I/O port, and command the device tosend back one or more values contained in its registers.

The Modbus southbound protocol adaptor can be configured to parse Modbuscommands and identify the device for which each command is intended. TheModbus southbound protocol adaptor can translate the command and/ordevice identifier into a standard format used by building managementsystem 102. Similarly, the Modbus southbound protocol adaptor cantranslate stored data within building management system 102 into aModbus data message and can send the Modbus data message to a connectedModbus device.

In some embodiments, southbound protocol adaptors 342 are configured tocommunicate and translate data received by software defined gateway 212in the LonWorks communications protocol. LonWorks is a networkingplatform specifically created to address the needs of controlapplications. LonWorks is used in a variety of industries includingbuilding, home, street lighting, transportation, utility, and industrialautomation. Products and applications built on top of the LonWorksplatform may include embedded machine control, municipal andhighway/tunnel/street lighting, heating and air conditioning systems,intelligent electricity metering, subway train control, buildinglighting, stadium lighting and speaker control, security systems, firedetection and suppression, and newborn location monitoring and alarming,and remote power generation load control.

The communications protocol by the LonWorks platform is known asLonTalk. The LonWorks southbound protocol adaptor can be configured toparse LonTalk formatted messages and extract the data content from themessages. The LonWorks southbound protocol adaptor can translate theLonTalk formatted data into a standard format used by buildingmanagement system 102. Similarly, the LonWorks southbound protocoladaptor can translate stored data within building management system 102into a LonTalk data message and can send the LonTalk data message to aconnected LonWorks device.

In some embodiments, southbound protocol adaptors 342 are configured toconnect non-IP and LAN-based IP devices and collect data (e.g., pullingdata from legacy devices). For example, southbound protocol adaptors 342can be configured to identify a messaging protocol or format used bylegacy devices and can map the data content of such messages into astandard format used by building management system 102. Southboundprotocol adaptors 342 can populate the attributes of a smart entityusing the data received from legacy devices in order to fully integratesuch legacy devices with building management system 102.

Southbound protocol adaptors 342 may include plug-in softwarearchitecture plays to provide extensibility. Each of southbound protocoladaptors 342 can provide a set of common operations and data models,which allows a software defined gateway 212 to communicate and exchangedata with a variety of different types of devices that use differentcommunication protocols. In some embodiments, southbound protocoladaptors 342 include protocol drivers that provide various commonoperation interfaces via APIs or inter-process communication. Forexample, southbound protocol adaptors 342 can manage driver processesincluding start, stop, restart and kill driver processes. Southboundprotocol adaptors 342 manage diver configuration data including passinginitial configuration data to the driver process, as well asreconfiguration requests. Southbound protocol adaptors 342 can requestsub-system discovery, request data reading and subscription of specificdata points, and can request driver performance and status information.

In some embodiments, southbound protocol adaptors 342 include a hostprocess that manages protocol drivers responsible for posting collecteddata to core services 338. This allows software defined gateway 212 tooptimize the data aggregation, enrichment and transmission at a givenstage of processing (e.g., be temporary, persistent, or kept in-memory)and computational constraints. Core services 338 can perform appropriatemessage aggregation, enrichment, transformation, and transmission toallow building management system 102 to store and process the collecteddata. API services 340 can be configured to interface with othersystems, devices, and processes to allow interaction with core services338 and other components of software defined gateway 212.

Northbound protocol adaptors 336 can be configured to communicate andtranslate data using various other protocols (e.g., HTTP(S), Web Socket,CoAP, MQTT, etc.) to allow building management system 102 to interactwith systems and devices using such communications protocols. In someembodiments, northbound protocol adaptors 336 are responsible forsending data to cloud services via a standard protocol such as HTTP(S),AMQP and/or MQTT.

Referring now to FIG. 5 , core services 338 are shown to include aconfiguration web application 402. Configuration web application 402 maybe a web-based application that allows for configuration of softwaredefined gateway 212. Configuration web application 402 may allow a userto view, set, or adjust the network configuration for both WAN and LAN,drivers, users, trending or telemetry data setup. An example of aninterface 600 which can be generated and presented by configuration webapplication 402 is shown in FIG. 6 .

Gateway command handler 406 can be configured to provide an interfacethat allows a remote user or application to perform gateway managementand unified driver management operations. For example, gateway commandhandler 406 allows an operator to update gateway software remotely,modify or create configuration through a unified gateway and connecteddevice management console. A management console can use gateway commandhandler 406 to manage many connected gateway devices. Logger 410 can beconfigured to perform system logging for performance optimization anddiagnostics purposes. Registration 412 can be configured to register andprovision software defined gateway 212 as a connected IoT device.

Protocol and resource translation 408 can be configured to expose legacydata points (i.e., a resource) as a trend to the platform services 220.Protocol and resource translation 408 can also expose legacy data pointsto be updated from remote mobile applications and make such pointsaccessible from internet protocols (e.g., a resource in RESTfulprotocol). Accordingly, protocol and resource translation 408 canprovide a mechanism to create a virtual resource accessible via IoTservice and to perform real-time semantic mediation between a legacysystem's resource and a corresponding virtual resource while maintaininguniform semantics. For example, a temperature reading from a legacyBACnet device is typically not accessible via the internet. However,protocol and resource translation 408 can create a virtual resource(e.g., a RESTful endpoint) and make it available to IoT services andapplications. This could be a simple mapping table or complextranslation service. Several examples of semantic mediation and protocoltranslation operations which can be performed by protocol and resourcetranslator 408 are described in detail in U.S. Pat. No. 8,516,016granted Aug. 20, 2013, and U.S. Pat. No. 9,189,527 granted Nov. 17,2015, both of which are incorporated by reference herein in theirentireties.

Command and control for drivers 414 can be configured to facilitatecommunication between IoT services and legacy systems through a seriesof abstraction layers and services. Such command and control abstractionprovides uniform management capabilities among various protocol adapters(or called protocol drivers). Command and control for drivers 414 canprovide a set of instructions including start, stop, restart, and killdriver process. Command and control for drivers 414 can providenotifications of driver configuration (e.g., IP address of BACnetdevice) to driver process to allow a driver to update its operatingconfiguration. Command and control for drivers 414 can also performsub-system discovery requests, on-demand data reading from the legacydevice, and inquiries of driver performance and status.

Core services 338 is shown to include two distinct messaging engines 404and 322. Messaging engine 404 can be configured to provide messagingbetween software defined gateway 212 and a cloud service, whereasmessaging engine 422 can be configured to provide messaging betweensoftware defined gateway 212 and various driver plug-ins (e.g., an MQTTdriver 424, a AMQP driver 426, a BACnet driver 428, etc.). Messagingengine 422 is more closely related to inter-process communication amonggateway core services 338 and protocol drivers 424-428. Messaging engine414 can be implemented with inter-process communication techniquesincluding pipe, message queue, and shared memory. Messaging engine 422can be implemented with a standard IoT messaging protocols (e.g., MQTT,AMQP, HTTP(S), etc.).

Local storage 416 can be configured to store data locally within coreservices 338. Telemetry data transmission 418 can be configured totransmit data to remote systems and devices for remote storage. Gatewayoperating system 420 provides an operating environment in which theother components, services, and modules of software defined gateway 212operate.

Gateway Deployment Topology

Referring now to FIG. 7 , a block diagram illustrating several differentgateway deployment topologies is shown. A gateway is not just apass-through proxy device that forwards data from sensors or otherdevices to services. Sending all the information collected by devices tobackend services would be highly ineffective in terms of performance andnetwork utilization. An IoT gateway can perform certain pre-processingof information close to a data source before they're sent to the cloudservice. Examples of pre-processing include message filtering, simplepattern detection, and aggregation.

FIG. 7 shows three types of gateway deployments: a hardware gateway 710,a software gateway 707, and a software defined gateway 212. Hardwaregateway 710 is implemented as a hardware device installed on site (i.e.,at the building site) with the equipment that sends data to gateway 710.For example, sensor 702 sends measurements to controller 704. Controller704 and actuator 706 communicate with a supervisory controller 708 usinglegacy communication (e.g., a serial cable). Supervisory controller 708communicates with hardware gateway 710, which sends data to buildingmanagement system 102.

Software gateway 707 is embedded into an IP-enabled device such as an IPactuator 712. IP actuator 712 uses a software gateway development SDK tomake registration, provisioning, and telemetry of the embedded softwaregateway 707. In some embodiments, the SDK comes with common runtimes tomake an IP device IoT gateway compliant. Software gateway 707 can bedeployed as a virtual machine or as a containerized software component.

Software defined gateway 212 can be implemented in the cloud as asoftware only option that uses legacy IP communication protocols such asBACnet over IP via VPN tunneling. Alternatively, software definedgateway 212 can be implemented at the customer site with the equipmentthat sends data to gateway 212. Software defined gateway 212 can performprotocol and message translation between legacy IP protocols and IoTmessaging protocols. In addition, software defined gateway 212 canperform registration and provisioning of a legacy IP device into cloudservices.

Gateway Software Update

Referring now to FIGS. 8A-9 , block diagrams illustrating severaltechniques for updating the software of gateway 212 are shown, accordingto various exemplary embodiments. It may be desirable to update thesoftware of gateway 212. After the development of the gateway softwareonto a device and delivery to the field, the ability to maintain andupdate gateway software may be limited. Accordingly, the ability todownload software updates over-the-air is particularly advantageous froma security and a maintenance perspective, as it can minimize thedelivery time of critical security fixes.

FIG. 8A illustrates a remote-initiated technique for updating thesoftware of gateway 212. In this approach, a remote management server802 pushes the proper version of the software to gateway 212. Forexample, remote management server 802 may send a notification to gateway212 that a new software version is available. This requires update pushaction from remote management server 802. Gateway 212 can then connectto and retrieve the latest version of the gateway software from asoftware repository 804.

FIG. 8B illustrates a gateway-initiated technique for updating thesoftware of gateway 212. In this approach, gateway 212 is responsiblefor connecting to software repository 804 and comparing the version ofsoftware installed on gateway 212 with the version of software availableat software repository 804. If there is an update, gateway 212 canautomatically download the latest version of the software. A softwareupdate monitoring agent can be installed in gateway 212 to communicatewith remote management server 802 and/or software repository 804. Thisis the most scalable approach because it doesn't require any centralizedcoordination of the deployment action.

FIG. 9 illustrates a technique that can be used when not all protocoland/or subsystem connectivity protocols can be deployed in a singlegateway software package. Some of the system connectivity protocols mayrequire a larger server class machine to deploy. In this technique, adevice identifies an embedded operating system/driver and service percustomer gateway (step 902). The customer protocol and subsystemconnectivity is selected (step 904) and the per customer gatewayprotocol list mapping is generated (step 906). Embedded operatingsystem/drivers, and associated services are built (step 908) andpublished to a content management and version control system (step 910).The embedded operating system/driver and service per customer gateway isstored in a database (step 912) and the device is notified that there isnew firmware (step 914). The protocol and subsystem configuration isthen used to perform protocol and configuration (step 916).

Integration with Enterprise Applications

Referring now to FIG. 10 , a block diagram of a system 1000 is shown,according to an exemplary embodiment. System 1000 is shown to includeenterprise applications 1002, software defined gateway 212, entityservice 226, and smart entities 1020. As described above, softwaredefined gateway 212 can be configured to receive IT data and OT datafrom a plurality of different data sources, translate the incoming ITdata and OT data into a format or protocol used by building managementsystem 102, and provide the translated IT data and OT data to entityservice 226. In some embodiments, the data sources include variousenterprise applications 1002 such as a workflow automation system 1004,a customer relationship management (CRM) system 1006, a globalinformation system (GIS) 1008, a device management system 1010, a humanresource system 1012, an accounting system 1014, a marketing system1016, and/or a building management system 1018.

The IT data received from enterprise applications 1002 may include datathat describes various entities (e.g., people, spaces, devices, etc.)and the relationships therebetween. For example, IT data from buildingmanagement system 1018 may include an entity graph that describes therelationships between spaces, equipment, and other entities (e.g.,chiller A provides chilled fluid to air handling unit B, air handlingunit B provides airflow to room C, temperature sensor D located in roomC, person E part of employee team F, floor G contains room C, etc.). ITdata from human resource system 1012 may include data that describes aset of employees and includes details about the employees (e.g., name,employee ID, job title/role, responsibilities, payroll information,address, etc.). IT data from device management system 1010 may includedevice information data that various IoT devices that communicate withbuilding management system 102.

Entity service 226 can use the incoming IT data to generate values forvarious static attributes of smart entities 1020. For example, entityservice can use IT data from human resources system 1012 to populateand/or generate values for the static attributes of person entity 1022.The static attributes may describe a particular person that personentity 1022 represents. For example, the static attributes of personentity 1022 are shown to include a name attribute (e.g., “John Smith”),a role attribute (e.g., “Service Tech”), an employee ID attribute (e.g.,“123”), a card ID attribute (e.g., “456”), and a plurality of otherattributes that describe the static characteristics of a particularperson. As another example, entity service can use IT data from devicemanagement system 1010 or building management system 1018 to populateand/or generate values for the static attributes of point entity 1024.The static attributes may describe a particular point in buildingmanagement system 1018 (e.g., a temperature point). For example, thestatic attributes of point entity 1024 are shown to include a point nameattribute (e.g., “AI 201-1”), a point type (e.g., “analog input”), aunit of measure (e.g., “Degrees F”), and a data source (e.g., “Sensor1”).

In some embodiments, the IT data received from enterprise applications1002 include workflow requests. For example, workflow automation system1004 can receive a request from a customer indicating that a particularpiece of equipment requires service. Workflow automation system 1004 cancreate a work order based on the customer request and provide the workorder to building management system 102 via software defined gateway212. Entity service 226 can translate the incoming work order into aworkflow request entity 1026 that includes a plurality of attributesthat describe the work order. For example, workflow request entity 1026is shown to include an ID attribute uniquely identifying the request(i.e., “request 123”), a type attribute that indicates the type ofrequest (e.g., “service request”), a customer attribute indicating acustomer associated with the request (e.g., “ABC Co.”), a locationattribute indicating a location at which service is requested (e.g.,“123 Main St.”), an equipment attribute identifying the equipmentrequiring service (e.g., “Chiller 1”), a model attribute identifying amodel number of the equipment requiring service (e.g., “YKK123”), and anissue attribute indicating why the equipment requires service (e.g.,“won't power on”).

The OT data received from enterprise applications 1002 may include datathat is generated and/or updated in real-time as a result of operatingthe systems and devices that provide data to building management system102. For example, OT data may include timeseries data received fromdevice management system 1010 or building management system 1018 (e.g.,sensor measurements, status indications, alerts, notifications, etc.),weather information received from weather service 152, a news feedreceived from news service 154, document updates received from documentservice 156, media updates received from media service 158, and/or othertypes of telemetry data. In general, OT data can be described asreal-time operational data or streaming data whereas IT data can bedescribed as institutional or contextual data that is not continuouslyupdated. For example, the OT data associated with a particular sensormay include measurements from the sensor, whereas the IT data associatedwith the sensor may include the sensor name, sensor type, and sensorlocation.

Entity service 226 can use the incoming OT data to derive or generatevalues for one or more dynamic attributes of smart entities 1020. Forexample, the “Location” attribute of person entity 1022 may indicate thecurrent location of the person represented by person entity 1022. Entityservice 226 can use the incoming OT data from building management system1018 to determine the current location of the person and can update thelocation attribute of person entity 1022 accordingly. Similarly, the“Value” attribute of point entity 1024 may indicate the current value ofthe temperature point represented by point entity 1024. Entity service226 can use the incoming OT data from building management system 1018 todetermine the current value of the temperature point (e.g., “67”) andcan update the value attribute of point entity 1024 accordingly.

As shown in FIG. 10 , the integration of enterprise applications 1002with smart entities 1020 is bidirectional. In the inbound direction,incoming IT data and OT data from enterprise applications 1002 can beingested by software defined gateway 212 and converted into static anddynamic attributes of smart entities 1020 by entity service 226. In theoutbound direction, the attributes of smart entities 1020 can be read byentity service 226 and translated into IT data and OT data by softwaredefined gateway 212. In some embodiments, software defined gateway 212translates the outbound IT data and OT data into a protocol or formatused by enterprise applications 1002. The translated IT data and OT datacan then be provided to enterprise applications 1002 for use inperforming an activity or process managed by enterprise applications1002 (e.g., building management, device management, customer management,personnel management, etc.).

Smart Entities and Entity Service

Referring now to FIG. 11 , a block diagram illustrating entity service226 in greater detail is shown, according to some embodiments. Entityservice 226 registers and manages various buildings (e.g., 110-140),spaces, persons, subsystems, devices (e.g., devices 112-146), and/orother entities in building management system 102. According to variousembodiments, an entity may be any person, place, or physical object,hereafter referred to as an object entity. Further, an entity may be anyevent, data point, or record structure, hereinafter referred to as dataentity. In addition, an object may define a relationship betweenentities, hereinafter referred to as a relational object.

In some embodiments, an object entity may be defined as having at leastthree types of attributes. For example, an object entity may have astatic attribute, a dynamic attribute, and a behavioral attribute. Thestatic attribute may include any unique identifier of the object entityor characteristic of the object entity that either does not change overtime or changes infrequently (e.g., a device ID, a person's name orsocial security number, a place's address or room number, and the like).The dynamic attribute may include a property of the object entity thatchanges over time (e.g., location, age, measurement, data point, and thelike). In some embodiments, the dynamic attribute of an object entitymay be linked to a data entity. In this case, the dynamic attribute ofthe object entity may simply refer to a location (e.g., data/networkaddress) or static attribute (e.g., identifier) of the linked dataentity, which may store the data (e.g., the value or information) of thedynamic attribute. Accordingly, in some such embodiments, when a newdata point is received for the object entity, only the linked dataentity may be updated, while the object entity remains unchanged.Therefore, resources that would have been expended to update the objectentity may be reduced.

However, the present disclosure is not limited thereto. For example, insome embodiments, there may also be some data that is updated (e.g.,during predetermined intervals) in the dynamic attribute of the objectentity itself. For example, the linked data entity may be configured tobe updated each time a new data point is received, whereas thecorresponding dynamic attribute of the object entity may be configuredto be updated less often (e.g., at predetermined intervals less than theintervals during which the new data points are received). In someimplementations, the dynamic attribute of the object entity may includeboth a link to the data entity and either a portion of the data from thedata entity or data derived from the data of the data entity. Forexample, in an embodiment in which periodic temperature readings arereceived from a thermostat, an object entity corresponding to thethermostat could include the last temperature reading and a link to adata entity that stores a series of the last ten temperature readingsreceived from the thermostat.

The behavioral attribute may define a function of the object entity, forexample, based on inputs, capabilities, and/or permissions. For example,behavioral attributes may define the types of inputs that the objectentity is configured to accept, how the object entity is expected torespond under certain conditions, the types of functions that the objectentity is capable of performing, and the like. As a non-limitingexample, if the object entity represents a person, the behavioralattribute of the person may be his/her job title or job duties, userpermissions to access certain systems or locations, expected location orbehavior given a time of day, tendencies or preferences based onconnected activity data received by entity service 226 (e.g., socialmedia activity), and the like. As another non-limiting example, if theobject entity represents a device, the behavioral attributes may includethe types of inputs that the device can receive, the types of outputsthat the device can generate, the types of controls that the device iscapable of, the types of software or versions that the device currentlyhas, known responses of the device to certain types of input (e.g.,behavior of the device defined by its programming), and the like.

In some embodiments, the data entity may be defined as having at least astatic attribute and a dynamic attribute. The static attribute of thedata entity may include a unique identifier or description of the dataentity. For example, if the data entity is linked to a dynamic attributeof an object entity, the static attribute of the data entity may includean identifier that is used to link to the dynamic attribute of theobject entity. In some embodiments, the dynamic attribute of the dataentity represents the data for the dynamic attribute of the linkedobject entity. In some embodiments, the dynamic attribute of the dataentity may represent some other data that is analyzed, inferred,calculated, or determined based on data from a plurality of datasources.

In some embodiments, the relational object may be defined as having atleast a static attribute. The static attribute of the relational objectmay semantically define the type of relationship between two or moreentities. For example, in a non-limiting embodiment, a relational objectfor a relationship that semantically defines that Entity A has a part ofEntity B, or that Entity B is a part of Entity A may include:

hasPart{Entity A, Entity B}

where the static attribute hasPart defines what the relationship is ofthe listed entities, and the order of the listed entities or data fieldof the relational object specifies which entity is the part of the other(e.g., Entity A→hasPart→Entity B).

In various embodiments, the relational object is an object-orientedconstruct with predefined fields that define the relationship betweentwo or more entities, regardless of the type of entities. For example,BMS 102 can provide a rich set of pre-built entity models withstandardized relational objects that can be used to describe how any twoor more entities are semantically related, as well as how data isexchanged and/or processed between the entities. Accordingly, a globalchange to a definition or relationship of a relational object at thesystem level can be effected at the object level, without having tomanually change the entity relationships for each object or entityindividually. Further, in some embodiments, a global change at thesystem level can be propagated through to third-party applicationsintegrated with BMS 102 such that the global change can be implementedacross all of the third-party applications without requiring manualimplementation of the change in each disparate application.

For example, referring to FIG. 12 , an example entity graph of entitydata is shown, according to some embodiments. The term “entity data” isused to describe the attributes of various entities and therelationships between the entities. For example, entity data may berepresented in the form of an entity graph. In some embodiments, entitydata includes any suitable predefined data models (e.g., as a table,JSON data, and/or the like), such as entity type or object, and furtherincludes one or more relational objects that semantically define therelationships between the entities. The relational objects may help tosemantically define, for example, hierarchical or directed relationshipsbetween the entities (e.g., entity X controls entity Y, entity A feedsentity B, entity 1 is located in entity 2, and the like). For example,an object entity (e.g., IoT device) may be represented by entity type orobject, which generally describes how data corresponding to the entitywill be structured and stored.

For example, an entity type (or object) “Thermostat” may be representedvia the below schema:

Thermostat{  Type,  Model No,  Device Name,  Manufactured date,  Serialnumber,  MAC address,  Location,  Current air quality,  Current indoortemperature,  Current outdoor temperature,  Target indoor temperature, Point schedule (e.g., BACnet schedule object) }where various attributes are static attributes (e.g., “Type,” “ModelNumber,” “Device Name,” etc.,), dynamic attributes (e.g., “Current airquality,” “Current outdoor temperature,” etc.), or behavioral attributes(e.g., “Target indoor temperature,” etc.) for the object entity“thermostat.” In a relational database, the object “Thermostat” is atable name, and the attributes represents column names.

An example of an object entity data model for a person named John Smithin a relational database may be represented by the below table:

First Last Name Name Tel. No. Age Location Job Title John Smith(213)220-XXXX 36 Home Engineerwhere various attributes are static attributes (e.g., “First Name,”“Last Name,” etc.,), dynamic attributes (e.g., “Age,” “Location,” etc.),or behavioral attributes (e.g., “Engineer”) for the object entity “JohnSmith.”

An example data entity for the data point “Current indoor temperature”for the “Thermostat” owned by John Smith in a relational database may berepresented by the below table:

Present- Unit of Value Description Device_Type measure 68 “Currentindoor temperature Thermostat Degrees-F. of John's house”where various attributes are static attributes (e.g., “Description” and“Device_Type”) and dynamic attributes (e.g., “Present-Value”).

While structuring the entities via entity type or object may help todefine the data representation of the entities, these data models do notprovide information on how the entities relate to each other. Forexample, a BMS, building subsystem, or device may need data from aplurality of sources as well as information on how the sources relate toeach other in order to provide a proper decision, action, orrecommendation. Accordingly, in various embodiments, the entity datafurther includes the relational objects to semantically define therelationships between the entities, which may help to increase speeds inanalyzing data, as well as provide ease of navigation and browsing.

For example, still referring to FIG. 12 , an entity graph 1200 for thethermostat object entity 1202 includes various class entities (e.g.,User, Address, SetPoint Command, and Temperature Object), relationalobjects (e.g., isAKindOf, Owns, isLinked, hasStorage, and hasOperation),and data entities (AI 201-01, TS ID 1, Daily Average 1, Abnormal indoortemp 1, AO 101-1, and Geo 301-01). The relational objects describe therelationships between the various class, object, and data entities in asemantic and syntactic manner, so that an application or user viewingthe entity graph 1200 can quickly determine the relationships and dataprocess flow of the thermostat object entity 1202, without having toresort to a data base analyst or engineer to create, index, and/ormanage the entities (e.g., using SQL or NoSQL).

For example, the entity graph 1200 shows that a person named John(object entity) 1204 isAKindOf (relational object) 1206 user (classentity) 1208. John 1204 owns (relational object) 1210 the thermostat1202. The thermostat 1202 has a location attribute (dynamic attribute)1212 that isLinked (relational object) 1214 to Geo 301-01 (data entity)1216, which isAKindOf (relational object) 1218 an address (class entity)1220. Accordingly, Geo 301-01 1216 should have a data pointcorresponding to an address.

The thermostat 1202 further includes a “current indoor temperature”attribute (dynamic attribute) 1222 that isLinked (relational object)1224 to AI 201-01 (data entity) 1226. AI 201-01 1226 isAKindOf(relational object) 1228 temperature object (class entity) 1230. Thus,AI 201-01 1226 should contain some sort of temperature related data. AI201-01 1226 hasStorage (relational object) 1232 at TS ID 1 (data entity)1234, which may be raw or derived timeseries data for the temperaturereadings. AI 201-01 1226 hasOperation (relational object) 1236 of DailyAverage 1 (data entity) 1238, which isAKindOf (relational object) 1240Analytic Operator (class entity) 1242. Thus, Daily Average 1 resultsfrom an analytic operation that calculates the daily average of theindoor temperature. AI 201-01 1226 further hasOperation (relationalobject) 1254 of Abnormal Indoor Temperature (data entity) 1256, whichisAKindOf (relational object) 1258 Analytic Operator (class entity)1260. Accordingly, Abnormal Indoor Temperature results from an analyticoperation to determine an abnormal temperature (e.g., exceeds or fallsbelow a threshold value).

In this example, the data entity AI 201-01 1226 may be represented bythe following data model:

point {  name: “AI 201-01”;  type: “analog input”;  value: 72;  unit:“Degree-F”;  source: “Temperature Sensor 1” }where “point” is an example of a data entity that may be created by BMS102 to hold the value for the linked “Current indoor temperature” 1222dynamic attribute of the Thermostat entity 1202, and source is thesensor or device in the Thermostat device that provides the data to thelinked “Current indoor temperature” 1222 dynamic attribute.

The data entity TS Id 1 1234 may be represented, for example, by thefollowing data model:

timeseries {  name: “TS Id 1”;  type: “Daily Average”;  values: “[68,20666, 70, 69, 71];  unit: “Degree-F”;  point: “AI 201-01”;  source:“Daily Average 1” }where the data entity Daily Average 1 1238 represents a specificanalytic operator used to create the data entity for the average dailytimeseries TS Id 1 1234 based on the values of the corresponding dataentity for point AI 201-01 1226. The relational object hasOperationshows that the AI 201-01 data entity 1226 is used as an input to thespecific logic/math operation represented by Daily Average 1 1238. TS Id1 1234 might also include an attribute that identifies the analyticoperator Daily Average 1 1238 as the source of the data samples in thetimeseries.

Still referring to FIG. 12 , the entity graph 1200 for thermostat 1202shows that the “target indoor temperature” attribute (dynamic attribute)1244 isLinked (relational attribute) 1246 to the data entity AO 101-01(data entity) 1248. AO 101-01 data entity 1248 isAKindOf (relationalattribute) 1250 SetPoint Command (class entity) 1252. Thus, the data indata entity AO 101-01 1248 may be set via a command by the user or otherentity, and may be used to control the thermostat object entity 1202.Accordingly, in various embodiments, entity graph 1200 provides a userfriendly view of the various relationships between the entities and dataprocessing flow, which provides for ease of navigation, browsing, andanalysis of data.

Referring again to FIG. 11 , entity service 226 may transform raw datasamples and/or raw timeseries data into data corresponding to entitydata. For example, as discussed above with reference to FIG. 12 , entityservice 226 can create data entities that use and/or represent datapoints in the timeseries data. Entity service 226 includes a web service1102, a registration service 1104, a management service 1106, atransformation service 1108, a search service 1110, and storage 1112. Insome embodiments, storage 1112 may be internal storage or externalstorage. For example, storage 1112 may be entity storage 216 (see FIG. 2), internal storage with relation to entity service 226, and/or mayinclude a remote database, cloud-based data hosting, or other remotedata storage.

Web service 1102 can be configured to interact with web-basedapplications to send entity data and/or receive raw data (e.g., datasamples, timeseries data, and the like). For example, web service 1102can provide an interface (e.g., API, UI/UX, and the like) to manage(e.g., register, create, edit, delete, and/or update) an entity (e.g.,class entity, object entity, data entity, relational object, and/or thelike). In some embodiments, web service 1102 provides entity data toweb-based applications. For example, if one or more of applications 230are web-based applications, web service 1102 can provide entity data tothe web-based applications.

In some embodiments, web service 1102 receives raw data samples and/orraw timeseries data including device information from a web-based datacollector, or a web-based security service to identify authorizedentities and to exchange secured messages. For example, if softwaredefined gateway 212 is a web-based application, web service 1102 canreceive the raw data samples and/or timeseries data including a deviceattribute indicating a type of device (e.g., IoT device) from which thedata samples and/or timeseries data are received from software definedgateway 212. In some embodiments, web service 1102 may message securityservice 222 to request authorization information and/or permissioninformation of a particular user, building, BMS, building subsystem,device, application, or other entity. In some embodiments, the entityservice 226 processes and transforms the collected data to generate theentity data.

Registration service 1104 can perform registration of devices andentities. For example, registration service 1104 can communicate withbuilding subsystems and client devices (e.g., via web service 1102) toregister each entity (e.g., building, BMS, building subsystems, devices,and the like) with BMS 102. In some embodiments, registration service1104 registers a particular building subsystem (or the devices therein)with a specific user and/or a specific set of permissions and/orentitlements. For example, a user may register a device key and/or adevice ID associated with the device via a web portal (e.g., web service1102). In some embodiments, the device ID and the device key may beunique to the device. The device ID may be a unique number associatedwith the device such as a unique alphanumeric string, a serial number ofthe device, and/or any other static identifier.

In various embodiments, the device is provisioned by a manufacturerand/or any other entity. In various embodiments, the device key and/ordevice ID are saved to the device or building subsystem based on whetherthe device includes a trusted platform module (TPM). If the deviceincludes a TPM, the device or building subsystem may store the devicekey and/or device ID according to the protocols of the TPM. If thedevice does not include a TPM, the device or building subsystem maystore the device key and/or device ID in a file and/or file field whichmay be stored in a secure storage location. Further, in someembodiments, the device ID may be stored with BIOS software of thedevice. For example, a serial number of BIOS software may become and/ormay be updated with the device ID.

In various embodiments, the device key and/or the device ID are uploadedto registration service 1104 (e.g., an IoT hub such as AZURE® IoT Hub).In some embodiments, registration service 1104 is configured to storethe device key and the device ID in secure permanent storage and/or maybe stored by security service 222 (e.g., by a security API). In someembodiments, a manufacturer and/or any other individual may register thedevice key and the device ID with registration service 1104 (e.g., viaweb service 1102). In various embodiments, the device key and the deviceID are linked to a particular profile associated with the buildingsubsystem or device and/or a particular user profile (e.g., a particularuser). In this regard, a device (or building subsystem) can beassociated with a particular user. In various embodiments, the devicekey and the device ID make up the profile for device. The profile may beregistered as a device that has been manufactured and/or provisioned buthas not yet been purchased by an end user.

In various embodiments, registration service 1104 adds and/or updates adevice in an building hub device registry. In various embodiments,registration service 1104 may determine if the device is alreadyregistered, can set various authentication values (e.g., device ID,device key), and can update the building hub device registry. In asimilar manner, registration service 1104 can update a document databasewith the various device registration information.

In some embodiments, registration service 1104 can be configured tocreate a virtual representation (e.g., “digital twins” or “shadowrecords”) of each object entity (e.g., person, room, building subsystem,device, and the like) in the building within BMS 102. In someembodiments, the virtual representations are smart entities that includeattributes defining or characterizing the corresponding object and areassociated to the corresponding object entity via relational objectsdefining the relationship of the object and the smart entityrepresentation thereof.

In some embodiments, the virtual representations maintain shadow copiesof the object entities with versioning information so that entityservice 226 can store not only the most recent update of an attribute(e.g., a dynamic attribute) associated with the object, but records ofprevious states of the attributes (e.g., dynamic attributes) and/orentities. For example, the shadow record may be created as a type ofdata entity that is related to a linked data entity corresponding to thedynamic attribute of the object entity (e.g., the person, room, buildingsubsystem, device, and the like). For example, the shadow entity may beassociated with the linked data entity via a relational object (e.g.,isLinked, hasStorage, hasOperation, and the like). In this case, theshadow entity may be used to determine additional analytics for the datapoint of the dynamic attribute. For example, the shadow entity may beused to determine an average value, an expected value, or an abnormalvalue of the data point from the dynamic attribute.

Management service 1106 may create, modify, or update variousattributes, data entities, and/or relational objects of the objectsmanaged by entity service 226 for each entity rather than per class ortype of entity. This allows for separate processing/analytics for eachindividual entity rather than only to a class or type of entity. Someattributes (or data entities) may correspond to, for example, the mostrecent value of a data point provided to BMS 102 via the raw datasamples and/or timeseries data. For example, the “current indoortemperature” dynamic attribute 1222 of the “thermostat” object entity1202 in the example discussed above may be the most recent value ofindoor temperature provided by the thermostat device. Management service1106 can use the relational objects of the entity data for thermostat1202 to determine where to update the data of the attribute.

For example, management service 1106 may determine that a data entity(e.g., AI 201-01) is linked to the “current indoor temperature” dynamicattribute of thermostat 1202 via an isLinked relational object. In thiscase, management service 1106 may automatically update the attributedata in the linked data entity. Further, if a linked data entity doesnot exist, management service 1106 can create a data entity (e.g., AI201-01) and an instance of the isLinked relational object 1224 to storeand link the “current indoor temperature” dynamic attribute ofthermostat 1202 therein. Accordingly, processing/analytics forthermostat 1202 may be automated. As another example, a “most recentview” attribute (or linked data entity) of a webpage object entity mayindicate the most recent time at which the webpage was viewed.Management service 1106 can use the entity data from a related clicktracking system object entity or web server object entity to determinewhen the most recent view occurred and can automatically update the“most recent view” attribute (or linked data entity) of the webpageentity accordingly.

Other data entities and/or attributes may be created and/or updated as aresult of an analytic, transformation, calculation, or other processingoperation based on the raw data and/or entity data. For example,management service 1106 can use the relational objects in entity data toidentify a related access control device (e.g., a card reader, a keypad,etc.) at the entrance/exit of a building object entity. Managementservice 1106 can use raw data received from the identified accesscontrol device to track the number of occupants entering and exiting thebuilding object entity (e.g., via related card entities used by theoccupants to enter and exit the building). Management service 1106 canupdate a “number of occupants” attribute (or corresponding data entity)of the building object each time a person enters or exits the buildingusing a related card entity, such that the “number of occupants”attribute (or data entity) reflects the current number of occupantswithin the building object.

As another example, a “total revenue” attribute associated with aproduct line object may be the summation of all the revenue generatedfrom related point of sales entities. Management service 1106 can usethe raw data received from the related point of sales entities todetermine when a sale of the product occurs, and can identify the amountof revenue generated by the sales. Management service 1106 can thenupdate the “total revenue” attribute (or related data entity) of theproduct line object by adding the most recent sales revenue from each ofthe related point of sales entities to the previous value of theattribute.

In some embodiments, management service 1106 uses entity data and/or rawdata from multiple different data sources to update the attributes (orcorresponding data entities) of various object entities. For example, anobject entity representing a person (e.g., a person's cellular device orother related object entity) may include a “risk” attribute thatquantifies the person's level of risk attributable to various physical,environmental, or other conditions. Management service 1106 can userelational objects of the person object entity to identify a relatedcard device and/or a related card reader from a related building objectentity (e.g., the building in which the person works) to determine thephysical location of the person at any given time. Management service1106 can use weather data from a weather service in the region in whichthe building object entity is located to determine whether any severeweather is approaching the person's location. Similarly, managementservice 1106 can use building data from related building entities of thebuilding object entity to determine whether the building in which theperson is located is experiencing any emergency conditions (e.g., fire,building lockdown, etc.) or environmental hazards (e.g., detected aircontaminants, pollutants, extreme temperatures, etc.) that couldincrease the person's level of risk. Management service 1106 can usethese and other types of data as inputs to a risk function thatcalculates the value of the person object's “risk” attribute and canupdate the person object (or related device entity of the person object)accordingly.

In some embodiments, management service 1106 can be configured tosynchronize configuration settings, parameters, and otherdevice-specific or object-specific information between the entities andBMS 102. In some embodiments, the synchronization occurs asynchronously.Management service 1106 can be configured to manage device propertiesdynamically. The device properties, configuration settings, parameters,and other device-specific information can be synchronized between thesmart entities created by and stored within BMS 102.

In some embodiments, management service 1106 is configured to manage amanifest for each of the building subsystems (or devices therein). Themanifest may include a set of relationships between the buildingsubsystems and various entities. Further, the manifest may indicate aset of entitlements for the building subsystems and/or entitlements ofthe various entities and/or other entities. The set of entitlements mayallow BMS 102, building subsystem, and/or a user to perform certainactions within the building or (e.g., control, configure, monitor,and/or the like).

Still referring to FIG. 11 , transformation service 1108 can providedata virtualization, and can transform various predefined standard datamodels for entities in a same class or type to have the same entity datastructure, regardless of the object, device, or thing that the entityrepresents. For example, each object entity under an object class mayinclude a location attribute, regardless of whether or not the locationattribute is used. Thus, if an application is later developed requiringthat each object entity includes a location attribute, manual mapping ofheterogenous data of different entities in the same class may beavoided. Accordingly, interoperability and scalability of applicationsmay be improved.

In some embodiments, transformation service 1108 can provide entitymatching, cleansing, and correlation so that a unified cleansed view ofthe entity data including the entity related information (e.g.,relational objects) can be provided. Transformation service 1108 cansupport semantic and syntactic relationship description in the form ofstandardized relational objects between the various entities. This maysimplify machine learning because the relational objects themselvesprovide all the relationship description between the other entities.Accordingly, the rich set of pre-built entity models and standardizedrelational objects may provide for rapid application development anddata analytics.

For example, FIG. 13 shows a flow diagram of a process 1300 for updatingor creating a data entity based on data received from a device of abuilding subsystem, according to some embodiments. Referring to FIG. 13, process 1300 starts, and when raw data and/or timeseries data isreceived from a device of a building subsystem, transformation service1108 may determine an identifier of the device from the received data atblock 1305. At block 1310, transformation service 1108 may compare anidentity static attribute from the data with identity static attributesof registered object entities to locate a data container for the device.If a match does not exist from the comparison at block 1315,transformation service 1108 may invoke registration service to registerthe device at block 1320. If a match exists from the comparison at block1315, transformation service 1108 may generate an entity graph orretrieve entity data for the device at block 1325.

From the entity graph or entity data, transformation service 1108 maydetermine if a corresponding data entity exists based on the relationalobjects (e.g., isLinked) for the device to update a dynamic attributefrom the data at block 1335. If not, management service 1106 may createa data entity for the dynamic attribute and an instance of acorresponding relational object (e.g., isLinked) to define therelationship between the dynamic attribute and created data entity atblock 1340. If the corresponding data entity exists, management service1106 may update the data entity corresponding to the dynamic attributefrom the data at block 1345. Then, transformation service 1108 mayupdate or regenerate the entity graph or entity data at block 1350, andprocess 1300 may end.

Referring again to FIG. 11 , search service 1110 provides a unified viewof product related information in the form of the entity graph, whichcorrelates entity relationships (via relational descriptors) amongmultiple data sources (e.g., CRM, ERP, MRP and the like). In someembodiments, search service 1110 is based on a schema-less and graphbased indexing architecture. Search service 1110 facilitates simplequeries without having to search multiple levels of the hierarchicaltree of the entity graph. For example, search service 1110 can returnresults based on searching of entity type, individual entities,attributes, or even relational objects without requiring other levels orentities of the hierarchy to be searched.

FIG. 14 is an example entity graph 1400 of entity data according to anembodiment of the present disclosure. The example of FIG. 14 assumesthat an HVAC fault detection application has detected an abnormaltemperature measurement with respect to temperature sensor 1412.However, temperature sensor 1412 itself may be operating properly, butmay rely on various factors, conditions, and other systems and devicesto measure the temperature properly. Accordingly, for example, the HVACfault detection application may need to know the room 1414 in which thetemperature sensor 1412 is located, the corresponding temperaturesetpoint, the status of the VAV 1404 that supplies conditioned air tothe room 1414, the status of the AHU 1402 that feeds the VAV 1404, thestatus of the vents in the HVAC zone 1410, etc., in order to pin pointthe cause of the abnormal measurement. Thus, the HVAC fault detectionapplication may require additional information from various relatedsubsystems and devices (e.g., entity objects), as well as the zones androoms (e.g., entity objects) that the subsystems and devices areconfigured to serve, to properly determine or infer the cause of theabnormal measurement.

Referring to FIG. 14 , entity graph 1400 shows the relationship betweentemperature sensor 1412 and related entities via relational objects(e.g., feeds, hasPoint, hasPart, Controls, etc.). For example, entitygraph 1400 shows that temperature sensor 1412 provides temperaturereadings (e.g., hasPoint) to VAV 1404 and HVAC zone 1410. AHU 1402provides (e.g., feeds) VAV 1404 with chilled and/or heated air. AHU 1402receives/provides power readings (e.g., hasPoint) from/to a power meter1408. VAV 1404 provides (e.g., feeds) air to HVAC zone 1410 using (e.g.,hasPart) a damper 1406. HVAC zone 1410 provides the air to room 1414.Further, rooms 1414 and 1420 are located in (e.g., hasPart) lightingzone 1418, which is controlled (e.g., controls) by lighting controller1416.

Accordingly, in the example of FIG. 14 , in response to receiving thefaulty measurement from temperature sensor 1412, the HVAC faultdetection application and/or analytics service 224 can determine fromthe entity graph that the fault could be caused by some malfunction inone or more of the other related entities, and not necessarily amalfunction of the temperature sensor 1412. Thus, the HVAC faultdetection application and/or the analytics service 224 can furtherinvestigate into the other related entities to determine or infer themost likely cause of the fault.

For example, FIG. 15 is a flow diagram of a process 1500 for analyzingdata from a second related device based on data from a first device,according to some embodiments. Referring to FIG. 15 , process 1500starts and data including an abnormal measurement is received from afirst device at block 1505. Transformation service 1108 determines anidentifier of the first device from the received data at block 1510.Transformation service 1108 identifies a second device that is relatedto the first device through relational objects associated with the firstdevice at block 1515. The second device can be part of the same buildingsubsystem as that of the first device or different building subsystem,and can be for a same building as that of the first device or differentbuilding. Transformation service 1108 invokes web service 1102 toretrieve measurement data from the second device at block 1520.Analytics service 224 analyzes the data from the first device and thesecond device at block 1525. Analytics service 224 provides arecommendation from the analysis of the data from each of the firstdevice and the second device at block 1530, and process 1500 ends.

Configuration of Exemplary Embodiments

The construction and arrangement of the systems and methods as shown inthe various exemplary embodiments are illustrative only. Although only afew embodiments have been described in detail in this disclosure, manymodifications are possible (e.g., variations in sizes, dimensions,structures, shapes and proportions of the various elements, values ofparameters, mounting arrangements, use of materials, colors,orientations, etc.). For example, the position of elements may bereversed or otherwise varied and the nature or number of discreteelements or positions may be altered or varied. Accordingly, all suchmodifications are intended to be included within the scope of thepresent disclosure. The order or sequence of any process or method stepsmay be varied or re-sequenced according to alternative embodiments.Other substitutions, modifications, changes, and omissions may be madein the design, operating conditions and arrangement of the exemplaryembodiments without departing from the scope of the present disclosure.

The present disclosure contemplates methods, systems and programproducts on any machine-readable media for accomplishing variousoperations. The embodiments of the present disclosure may be implementedusing existing computer processors, or by a special purpose computerprocessor for an appropriate system, incorporated for this or anotherpurpose, or by a hardwired system. Embodiments within the scope of thepresent disclosure include program products comprising machine-readablemedia for carrying or having machine-executable instructions or datastructures stored thereon. Such machine-readable media can be anyavailable media that can be accessed by a general purpose or specialpurpose computer or other machine with a processor. By way of example,such machine-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROMor other optical disk storage, magnetic disk storage or other magneticstorage devices, or any other medium which can be used to carry or storedesired program code in the form of machine-executable instructions ordata structures and which can be accessed by a general purpose orspecial purpose computer or other machine with a processor. Combinationsof the above are also included within the scope of machine-readablemedia. Machine-executable instructions include, for example,instructions and data which cause a general purpose computer, specialpurpose computer, or special purpose processing machines to perform acertain function or group of functions.

Although the figures show a specific order of method steps, the order ofthe steps may differ from what is depicted. Also two or more steps maybe performed concurrently or with partial concurrence. Such variationwill depend on the software and hardware systems chosen and on designerchoice. All such variations are within the scope of the disclosure.Likewise, software implementations could be accomplished with standardprogramming techniques with rule based logic and other logic toaccomplish the various connection steps, processing steps, comparisonsteps and decision steps.

In various implementations, the steps and operations described hereinmay be performed on one processor or in a combination of two or moreprocessors. For example, in some implementations, the various operationscould be performed in a central server or set of central serversconfigured to receive data from one or more devices (e.g., edgecomputing devices/controllers) and perform the operations. In someimplementations, the operations may be performed by one or more localcontrollers or computing devices (e.g., edge devices), such ascontrollers dedicated to and/or located within a particular building orportion of a building. In some implementations, the operations may beperformed by a combination of one or more central or offsite computingdevices/servers and one or more local controllers/computing devices. Allsuch implementations are contemplated within the scope of the presentdisclosure. Further, unless otherwise indicated, when the presentdisclosure refers to one or more computer-readable storage media and/orone or more controllers, such computer-readable storage media and/or oneor more controllers may be implemented as one or more central servers,one or more local controllers or computing devices (e.g., edge devices),any combination thereof, or any other combination of storage mediaand/or controllers regardless of the location of such devices.

The term “client or “server” include all kinds of apparatus, devices,and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing. The apparatus may includespecial purpose logic circuitry, e.g., a field programmable gate array(FPGA) or an application specific integrated circuit (ASIC). Theapparatus may also include, in addition to hardware, code that createsan execution environment for the computer program in question (e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more ofthem). The apparatus and execution environment may realize variousdifferent computing model infrastructures, such as web services,distributed computing and grid computing infrastructures.

The systems and methods of the present disclosure may be completed byany computer program. A computer program (also known as a program,software, software application, script, or code) may be written in anyform of programming language, including compiled or interpretedlanguages, declarative or procedural languages, and it may be deployedin any form, including as a stand-alone program or as a module,component, subroutine, object, or other unit suitable for use in acomputing environment. A computer program may, but need not, correspondto a file in a file system. A program may be stored in a portion of afile that holds other programs or data (e.g., one or more scripts storedin a markup language document), in a single file dedicated to theprogram in question, or in multiple coordinated files (e.g., files thatstore one or more modules, sub programs, or portions of code). Acomputer program may be deployed to be executed on one computer or onmultiple computers that are located at one site or distributed acrossmultiple sites and interconnected by a communication network.

The processes and logic flows described in this specification may beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows may also be performedby, and apparatus may also be implemented as, special purpose logiccircuitry (e.g., an FPGA or an ASIC).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data (e.g., magnetic, magneto-optical disks, or optical disks).However, a computer need not have such devices. Moreover, a computer maybe embedded in another device (e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), etc.). Devicessuitable for storing computer program instructions and data include allforms of non-volatile memory, media and memory devices, including by wayof example semiconductor memory devices (e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto-optical disks; and CD ROM and DVD-ROM disks). Theprocessor and the memory may be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification may be implemented on a computerhaving a display device (e.g., a CRT (cathode ray tube), LCD (liquidcrystal display), OLED (organic light emitting diode), TFT (thin-filmtransistor), or other flexible configuration, or any other monitor fordisplaying information to the user and a keyboard, a pointing device,e.g., a mouse, trackball, etc., or a touch screen, touch pad, etc.) bywhich the user may provide input to the computer. Other kinds of devicesmay be used to provide for interaction with a user as well; for example,feedback provided to the user may be any form of sensory feedback (e.g.,visual feedback, auditory feedback, or tactile feedback), and input fromthe user may be received in any form, including acoustic, speech, ortactile input. In addition, a computer may interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Implementations of the subject matter described in this disclosure maybe implemented in a computing system that includes a back-end component(e.g., as a data server), or that includes a middleware component (e.g.,an application server), or that includes a front end component (e.g., aclient computer) having a graphical user interface or a web browserthrough which a user may interact with an implementation of the subjectmatter described in this disclosure, or any combination of one or moresuch back end, middleware, or front end components. The components ofthe system may be interconnected by any form or medium of digital datacommunication (e.g., a communication network). Examples of communicationnetworks include a LAN and a WAN, an inter-network (e.g., the Internet),and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The present disclosure may be embodied in various different forms, andshould not be construed as being limited to only the illustratedembodiments herein. Rather, these embodiments are provided as examplesso that this disclosure will be thorough and complete, and will fullyconvey the aspects and features of the present disclosure to thoseskilled in the art. Accordingly, processes, elements, and techniquesthat are not necessary to those having ordinary skill in the art for acomplete understanding of the aspects and features of the presentdisclosure may not be described. Unless otherwise noted, like referencenumerals denote like elements throughout the attached drawings and thewritten description, and thus, descriptions thereof may not be repeated.Further, features or aspects within each example embodiment shouldtypically be considered as available for other similar features oraspects in other example embodiments.

It will be understood that, although the terms “first,” “second,”“third,” etc., may be used herein to describe various elements,components, regions, layers and/or sections, these elements, components,regions, layers and/or sections should not be limited by these terms.These terms are used to distinguish one element, component, region,layer or section from another element, component, region, layer orsection. Thus, a first element, component, region, layer or sectiondescribed below could be termed a second element, component, region,layer or section, without departing from the spirit and scope of thepresent disclosure.

The terminology used herein is for the purpose of describing particularembodiments and is not intended to be limiting of the presentdisclosure. As used herein, the singular forms “a” and “an” are intendedto include the plural forms as well, unless the context clearlyindicates otherwise. It will be further understood that the terms“comprises,” “comprising,” “includes,” and “including,” “has, ” “have, ”and “having,” when used in this specification, specify the presence ofthe stated features, integers, steps, operations, elements, and/orcomponents, but do not preclude the presence or addition of one or moreother features, integers, steps, operations, elements, components,and/or groups thereof. As used herein, the term “and/or” includes anyand all combinations of one or more of the associated listed items.Expressions such as “at least one of,” when preceding a list ofelements, modify the entire list of elements and do not modify theindividual elements of the list.

As used herein, the term “substantially,” “about,” and similar terms areused as terms of approximation and not as terms of degree, and areintended to account for the inherent variations in measured orcalculated values that would be recognized by those of ordinary skill inthe art. Further, the use of “may” when describing embodiments of thepresent disclosure refers to “one or more embodiments of the presentdisclosure.” As used herein, the terms “use,” “using,” and “used” may beconsidered synonymous with the terms “utilize,” “utilizing,” and“utilized,” respectively. Also, the term “exemplary” is intended torefer to an example or illustration.

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

1-20. (canceled)
 21. A building system of a building comprising one ormore storage devices storing instructions thereon that, when executed byone or more processors, cause the one or more processors to: store anentity database in the one or more storage devices, the entity databaseincluding object entities representing at least one of devices, people,spaces, or events associated with the building and data entitiesrepresenting data associated with at least one of the devices, people,spaces, or events associated with the building, and relational objectsindicating semantic relationships between the object entities and thedata entities; connect to an operation technology (OT) network locatedwithin the building and receive OT data from the OT network locatedwithin the building; and cause the entity database to store the OT databy modifying the entity database by updating existing information of theentity database or adding information to the entity database.
 22. Thebuilding system of claim 21, wherein the instructions cause the one ormore processors to: receive information technology (IT) data from one ormore data sources; and cause the entity database to store the IT data bymodifying the entity database by updating the existing information ofthe entity database or adding the information to the entity database.23. The building system of claim 21, wherein the relational objectsindicating the semantic relationships include a relational objectindicating a semantic relationship that is a type of relationship of aplurality of types of relationships between a first entity and a secondentity.
 24. The building system of claim 21, wherein the relationalobjects indicate a type of relationship of a semantic relationship withan attribute.
 25. The building system of claim 21, wherein theinstructions cause the one or more processors to receive informationtechnology (IT) data from one or more IT data sources and the OT datafrom one or more OT data sources of the OT network; wherein the one ormore IT data sources are one or more software services that store the ITdata and operate to perform a primary function separate from operationalcontrol or analysis of a physical environment.
 26. The building systemof claim 21, wherein the instructions cause the one or more processorsto create a new object entity in the entity database or update anexisting object entity in the entity database using IT data and the OTdata, the new object entity or the existing object entity related to oneor more first attributes having values derived from the IT data and oneor more second attributes having values derived from the OT data. 27.The building system of claim 21, wherein the instructions cause the oneor more processors to: receive IT data from an IT data source and updatethe entity database based on the IT data; wherein: the IT data describesone or more characteristics of the devices, people, or spaces, the oneor more characteristics being static or changing at a first rate; andthe OT data describes one or more states or conditions of the devices,people, or spaces, the one or more states or conditions being dynamic orchanging at a second rate faster than the first rate.
 28. The buildingsystem of claim 21, wherein the instructions cause the one or moreprocessors to implement a software defined gateway; wherein the softwaredefined gateway is configured to use different communications protocolsto communicate with one or more data sources of the building, thedifferent communications protocols comprising at least one of BACnet,Modbus, LonTalk, SQL, JMS, AMQP, MQTT, FTP, or HTTP.
 29. The buildingsystem of claim 21, wherein the OT network includes one or more datasources comprising at least two of internet of things (IoT) devices,building equipment, a weather service, a news service, a documentservice, a human resources service, a billing service, or a mediaservice.
 30. The building system of claim 21, wherein the OT datacomprises event data received in real-time from building equipmentinstalled within the building, the building equipment comprising atleast one of a chiller, a boiler, a sensor, a cooling tower, and airhandling unit, a rooftop unit, a variable air volume unit, lightingequipment, security equipment, or fire detection equipment.
 31. Thebuilding system of claim 21, wherein the OT data comprise data samplescollected from building equipment devices comprising at least one ofsensors, actuators, electronics, vehicles, or home appliances.
 32. Amethod comprising: storing, by one or more processing circuits, anentity database in the one or more storage devices, the entity databaseincluding object entities representing at least one of devices, people,spaces, or events of a building and data entities representing dataassociated with at least one of the devices, people, spaces, or eventsassociated with the building, and relational objects indicating semanticrelationships between the object entities and the data entities;connecting, by the one or more processing circuits, to an operationtechnology (OT) network located within the building and receiving OTdata from the OT network located within the building; and causing, bythe one or more processing circuits, the entity database to store the OTdata by modifying the entity database by updating existing informationof the entity database or adding information to the entity database. 33.The method of claim 32, comprising: receiving, by the one or moreprocessing circuits, information technology (IT) data from one or moredata sources; and causing, by the one or more processing circuits, theentity database to store the IT data by modifying the entity database byupdating the existing information of the entity database or adding theinformation to the entity database.
 34. The method of claim 32, whereinthe relational objects indicating the semantic relationships include arelational object indicating a semantic relationship that is a type ofrelationship of a plurality of types of relationships between a firstentity and a second entity.
 35. The method of claim 32, wherein therelational objects indicate a type of relationship of a semanticrelationship with an attribute.
 36. The method of claim 32, comprising:receiving, by the one or more processing circuits, informationtechnology (IT) data from one or more IT data sources and operationaltechnology (OT) data from one or more OT data sources of the OT network;wherein the one or more IT data sources are one or more softwareservices that store the IT data and operate to perform a primaryfunction separate from operational control or analysis of a physicalenvironment.
 37. The method of claim 32, comprising: creating, by theone or more processing circuits, a new object entity in the entitydatabase or updating an existing object entity in the entity databaseusing IT data and the OT data, the new object entity or the existingobject entity related to one or more first attributes having valuesderived from the IT data and one or more second attributes having valuesderived from the OT data.
 38. The method of claim 32, comprising:receiving, by the one or more processing circuits, IT data from an ITdata source and update the entity database based on the IT data;wherein: the IT data describes one or more characteristics of thedevices, people, or spaces, the one or more characteristics being staticor changing at a first rate; and the OT data describes one or morestates or conditions of the devices, people, or spaces, the one or morestates or conditions being dynamic or changing at a second rate fasterthan the first rate.
 39. The method of claim 32, comprising:implementing, by the one or more processing circuits, a software definedgateway; wherein the software defined gateway is configured to usedifferent communications protocols to communicate with one or more datasources of the building, the different communications protocolscomprising at least one of BACnet, Modbus, LonTalk, SQL, JMS, AMQP,MQTT, FTP, or HTTP.
 40. One or more storage devices storing instructionsthereon that, when executed by one or more processors, cause the one ormore processors to: store an entity database in the one or more storagedevices, the entity database including object entities representing atleast one of devices, people, spaces, or events of a building, and dataentities representing data associated with at least one of the devices,people, spaces, or events associated with the building, and relationalobjects indicating semantic relationships between the object entitiesand the data entities; connect to an operation technology (OT) networklocated within the building and receive OT data from the OT networklocated within the building; and cause the entity database to store theOT data by modifying the entity database by updating existinginformation of the entity database or adding information to the entitydatabase.